Automated transfer of neural network definitions among federated areas

ABSTRACT

An apparatus includes a processor to: perform a testing job flow at least partly within a testing federated area to test a neural network defined by configuration data specifying hyperparameters and trained parameters thereof; and perform a transfer flow to transfer an object indicative of results of the testing from the testing federated area to another federated area, wherein: in response to the degree of accuracy falling below a predetermined minimum threshold, the processor is caused to transfer a specification of the degree of accuracy or a portion of inaccurate output to a training federated area in which the neural network was at least partly trained; and in response to the degree of accuracy exceeding a predetermined maximum threshold, the processor is caused to transfer a copy of the neural network configuration data to a usage federated area in which the neural network is to be made available for use.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of, and claims the benefit ofpriority under 35 U.S.C. § 120 to, U.S. patent application Ser. No.15/897,723 filed Feb. 15, 2018; which is a continuation-in-part of, andclaims the benefit of priority under 35 U.S.C. § 120 to, U.S. patentapplication Ser. No. 15/896,613 filed Feb. 14, 2018 (since issued asU.S. Pat. No. 10,002,029); which is a continuation-in-part of, andclaims the benefit of priority under 35 U.S.C. § 120 to, U.S. patentapplication Ser. No. 15/851,869 filed Dec. 22, 2017; which is acontinuation of, and claims the benefit of priority under 35 U.S.C. §120 to, U.S. patent application Ser. No. 15/613,516 filed Jun. 5, 2017(since issued as U.S. Pat. No. 9,852,013); which is a continuation of,and claims the benefit of priority under 35 U.S.C. § 120 to, U.S. patentapplication Ser. No. 15/425,886 filed Feb. 6, 2017 (since issued as U.S.Pat. No. 9,684,544); which is a continuation of, and claims the benefitof priority under 35 U.S.C. § 120 to, U.S. patent application Ser. No.15/425,749 also filed on Feb. 6, 2017 (since issued as U.S. Pat. No.9,864,543), all of which are incorporated herein by reference in theirrespective entireties for all purposes.

This application also claims the benefit of priority under 35 U.S.C. §119(e) to U.S. Provisional Application Ser. No. 62/560,506 filed Sep.19, 2017, and to U.S. Provisional Application Ser. No. 62/534,678 filedJul. 19, 2017, both of which are incorporated herein by reference intheir respective entireties for all purposes. U.S. patent applicationSer. No. 15/896,613 also claims the benefit of priority under 35 U.S.C.§ 119(e) to U.S. Provisional Application Ser. No. 62/460,000 filed Feb.16, 2017, which is incorporated herein by reference in its entirety forall purposes. U.S. patent application Ser. No. 15/425,749 also claimsthe benefit of priority under 35 U.S.C. § 119(e) to U.S. ProvisionalApplication Ser. No. 62/292,078 filed Feb. 5, 2016, and to U.S.Provisional Application Ser. No. 62/297,454 filed Feb. 19, 2016, both ofwhich are incorporated herein by reference in their respectiveentireties for all purposes.

BACKGROUND

Neuromorphic processing has advanced sufficiently to enable itscost-effective use in performing routine tasks that were once solelyaddressed by non-neuromorphic instruction-based processing based on theexecution of a series of instructions, rather than through use of aneural network. In various areas in which some minimal degree ofinaccuracy in the results of processing large amounts of data is deemedacceptable, the use of neural networks of sufficient size and complexityto perform a function may enable one or more orders of magnitude inimprovement of processing speed.

Distributed development of task routines and the performance of analysistasks using pooled task routines with pooled data has advanced to anextent that the addition of mechanisms for organization of developmentand to provide oversight for reproducibility and accountability havebecome increasingly desired. In various scientific, technical and otherareas, the quantities of data employed in performing analysis tasks havebecome ever larger, thereby making desirable the pooling of data objectsto enable collaboration, share costs and/or improve access. Also, suchlarge quantities of data, by virtue of the amount and detail of theinformation they contain, have become of such value that it has becomedesirable to find as many uses as possible for such data in peerreviewing and in as wide a variety of analysis tasks. Thus, the poolingof components of analysis routines to enable reuse, oversight and errorchecking has also become desirable.

SUMMARY

This summary is not intended to identify only key or essential featuresof the described subject matter, nor is it intended to be used inisolation to determine the scope of the described subject matter. Thesubject matter should be understood by reference to appropriate portionsof the entire specification of this patent, any or all drawings, andeach claim.

An apparatus includes a first processor and a first storage to storefirst instructions that, when executed by the first processor, cause thefirst processor to perform operations including, perform a testing jobflow with a testing data set at least partly within a testing federatedarea to test a neural network trained to perform an analytical function,wherein: the neural network is defined by neural network configurationdata that specifies a hyperparameter comprising at least one of aquantity of artificial neurons within the neural network or a quantityof rows of the artificial neurons into which the artificial neurons areorganized within the neural network; the neural network configurationdata also specifies a trained parameter comprising at least one ofweight values of the artificial neurons, bias values of the artificialneurons or firing patterns of the artificial neurons; the testing dataset comprises multiple sets of input values and corresponding multiplesets of output values generated from a previous performance of theanalytical function with the multiple sets of input values; theperformance of the testing job flow comprises multiple iterations ofexecution, by the first processor, of instructions of at least onetesting routine; during each iteration of execution of at least onetesting routine, the first processor is caused to provide a set of inputvalues of the testing data set to the neural network, and to analyze anoutput of the neural network generated from the set of input valuesrelative to the corresponding set of output values of the testing datato determine a degree of accuracy of the performance of the analyticalfunction by the neural network; and the testing federated area ismaintained within one or more storage devices to store at least one ofthe at least one testing routine, the testing data set or a testing jobflow definition that defines the testing job flow. The first processoris also caused to perform a transfer flow to transfer an objectindicative of results of the testing of the neural network from thetesting federated area to another federated area, wherein theperformance of the transfer flow comprises at least one iteration ofexecution, by the first processor, of instructions of at least onetransfer routine that causes the first processor to: in response to thedegree of accuracy falling below a predetermined minimum threshold,select a training federated area that is maintained by the one or morestorage devices, and in which the neural network was at least partlytrained, to be the other federated area to which the object is to betransferred, and transfer the object to the selected other federatedarea, wherein the object comprises at least one of a data value thatspecifies the degree of accuracy, at least one set of input values ofthe testing data set associated with inaccurate output, at least one setof output values of the testing data set associated with inaccurateoutput, or inaccurate output generated from at least one set of inputvalues of the testing data set; and in response to the degree ofaccuracy exceeding a predetermined maximum threshold, select a usagefederated area that is maintained by the one or more storage devices,and in which the neural network is to be made available for use, andtransfer the object to the selected other federated area, wherein theobject comprises a copy of the neural network configuration data.

During performance of the transfer flow, the first processor is caused,by execution of the at least one transfer routine, to receive the neuralnetwork configuration data from the training federated area aftercompletion of the training of the neural network at partly within thetraining federated area; and during performance of the testing job flow,the first processor is caused, by execution of at least one testingsetup routine of the testing job flow, to use the neural networkconfiguration data to instantiate the neural network in preparation forthe multiple iterations of execution of the at least one testingroutine. The apparatus may further include a graphics processing unit(GPU) that comprises multiple processing cores that are programmable tooperate as the artificial neurons, wherein the first processor is causedby execution of the at least one testing setup routine to use the neuralnetwork configuration data to instantiate the neural network among theartificial neurons of the multiple processing cores of the GPU. Theapparatus may further include a field-programmable gate array (FPGA) oran application-specific integrated circuit (ASIC) to implement theartificial neurons with hardware components, wherein the first processoris caused by execution of the at least one testing setup routine to loadthe neural network configuration data into the FPGA or the ASIC toinstantiate the neural network therein. The apparatus may furtherinclude a second processor and a second storage to store secondinstructions that, when executed by the second processor, cause thesecond processor to perform operations including: perform a training jobflow with a training data set to train the neural network at leastpartly within the training federated area; and cooperate with the firstprocessor to perform the transfer flow, wherein the cooperationcomprises performing operations including monitor the training of theneural network, and in response to completion of the training, transferthe neural network configuration data from the training federated areato the testing federated area. During performance of the training jobflow, the second processor may be caused, by execution of at least onetraining setup routine of the training job flow, to select a first setof hyperparameters to define the neural network; and in response to thetransfer of the object from the testing federated area to the trainingfederated area in response to the degree of accuracy falling below theminimum threshold, the second processor is caused, by execution of theat least one training setup routine to select a second set ofhyperparameters to define the neural network that differs from the firstset of hyperparameters.

During performance of the transfer flow, the first processor may becaused, by execution of the at least one transfer routine, and inresponse to the degree of accuracy falling between the minimum thresholdand the maximum threshold, to perform operations including: ceaseperformance of the testing job flow; use backpropagation and at least aportion of the testing data set to further train the neural network; andrecommence performance of the testing job flow following the furthertraining. The first processor may be caused, by execution of the atleast one transfer routine, and in response to the degree of accuracyfalling below the minimum threshold, to perform operations including:perform a regression analysis of at least a portion of the testing dataset associated with inaccurate output by the neural network; and selectdata generated by the regression analysis as the object to betransmitted to the training federated area. The one or more storagedevices may maintain a tree of federated areas that comprises thetraining federated area, the testing federated area and the usagefederated area; the training federated area may be located within afirst branch of the tree; the testing federated area may be locatedwithin a second branch of the tree; the usage federated area may belocated within one of a third branch of the tree, and a base federatedarea of the tree or an intermediate federated area of the tree fromwhich the first branch and the second branch extend; and access to theusage federated area is less restricted than to the training federatedarea and the testing federated area. The first processor may be caused,by each iteration of execution of the at least one testing routine, toderive a least mean square (LMS) error during the analysis of an outputof the neural network relative to a corresponding set of output valuesof the testing data.

A computer-program product tangibly embodied in a non-transitorymachine-readable storage medium, the computer-program product includingfirst instructions operable to cause a first processor to performoperations including perform a testing job flow with a testing data setat least partly within a testing federated area to test a neural networktrained to perform an analytical function, wherein: the neural networkis defined by neural network configuration data that specifies ahyperparameter comprising at least one of a quantity of artificialneurons within the neural network or a quantity of rows of theartificial neurons into which the artificial neurons are organizedwithin the neural network; the neural network configuration data alsospecifies a trained parameter comprising at least one of weight valuesof the artificial neurons, bias values of the artificial neurons orfiring patterns of the artificial neurons; the testing data setcomprises multiple sets of input values and corresponding multiple setsof output values generated from a previous performance of the analyticalfunction with the multiple sets of input values; the performance of thetesting job flow comprises multiple iterations of execution, by thefirst processor, of instructions of at least one testing routine; duringeach iteration of execution of at least one testing routine, the firstprocessor is caused to provide a set of input values of the testing dataset to the neural network, and to analyze an output of the neuralnetwork generated from the set of input values relative to thecorresponding set of output values of the testing data to determine adegree of accuracy of the performance of the analytical function by theneural network; and the testing federated area is maintained within oneor more storage devices to store at least one of the at least onetesting routine, the testing data set or a testing job flow definitionthat defines the testing job flow. The first processor is further causedto: perform a transfer flow to transfer an object indicative of resultsof the testing of the neural network from the testing federated area toanother federated area, wherein the performance of the transfer flowcomprises at least one iteration of execution, by the first processor,of instructions of at least one transfer routine that causes the firstprocessor to: in response to the degree of accuracy falling below apredetermined minimum threshold, select a training federated area thatis maintained by the one or more storage devices, and in which theneural network was at least partly trained, to be the other federatedarea to which the object is to be transferred, and transfer the objectto the selected other federated area, wherein the object comprises atleast one of a data value that specifies the degree of accuracy, atleast one set of input values of the testing data set associated withinaccurate output, at least one set of output values of the testing dataset associated with inaccurate output, or inaccurate output generatedfrom at least one set of input values of the testing data set; and inresponse to the degree of accuracy exceeding a predetermined maximumthreshold, select a usage federated area that is maintained by the oneor more storage devices, and in which the neural network is to be madeavailable for use, and transfer the object to the selected otherfederated area, wherein the object comprises a copy of the neuralnetwork configuration data.

During performance of the transfer flow, the first processor may becaused, by execution of the at least one transfer routine, to receivethe neural network configuration data from the training federated areaafter completion of the training of the neural network at partly withinthe training federated area; and during performance of the testing jobflow, the first processor is caused, by execution of at least onetesting setup routine of the testing job flow, to use the neural networkconfiguration data to instantiate the neural network in preparation forthe multiple iterations of execution of the at least one testingroutine. The first processor may be caused, by execution of the at leastone testing setup routine, to use the neural network configuration datato instantiate the neural network among the artificial neurons providedby multiple processing cores of a graphics processing unit (GPU) thatare programmable to operate as the artificial neurons. Afield-programmable gate array (FPGA) or an application-specificintegrated circuit (ASIC) may implement the artificial neurons withhardware components; and the first processor may be caused by executionof the at least one testing setup routine to load the neural networkconfiguration data into the FPGA or the ASIC to instantiate the neuralnetwork therein. The computer-program product may further include secondinstructions that, when executed by a second processor, cause the secondprocessor to perform operations including: perform a training job flowwith a training data set to train the neural network at least partlywithin the training federated area; and cooperate with the firstprocessor to perform the transfer flow, wherein the cooperationcomprises performing operations including monitor the training of theneural network, and in response to completion of the training, transferthe neural network configuration data from the training federated areato the testing federated area. During performance of the training jobflow, the second processor may be caused, by execution of at least onetraining setup routine of the training job flow, to select a first setof hyperparameters to define the neural network; and in response to thetransfer of the object from the testing federated area to the trainingfederated area in response to the degree of accuracy falling below theminimum threshold, the second processor may be caused, by execution ofthe at least one training setup routine to select a second set ofhyperparameters to define the neural network that differs from the firstset of hyperparameters.

During performance of the transfer flow, the first processor may becaused, by execution of the at least one transfer routine, and inresponse to the degree of accuracy falling between the minimum thresholdand the maximum threshold, to perform operations including: ceaseperformance of the testing job flow; use backpropagation and at least aportion of the testing data set to further train the neural network; andrecommence performance of the testing job flow following the furthertraining. The first processor may be caused, by execution of the atleast one transfer routine, and in response to the degree of accuracyfalling below the minimum threshold, to perform operations including:perform a regression analysis of at least a portion of the testing dataset associated with inaccurate output by the neural network; and selectdata generated by the regression analysis as the object to betransmitted to the training federated area. The one or more storagedevices may maintain a tree of federated areas that includes thetraining federated area, the testing federated area and the usagefederated area; the training federated area is located within a firstbranch of the tree; the testing federated area is located within asecond branch of the tree; the usage federated area is located withinone of a third branch of the tree, and a base federated area of the treeor an intermediate federated area of the tree from which the firstbranch and the second branch extend; and access to the usage federatedarea is less restricted than to the training federated area and thetesting federated area. The first processor may be caused, by eachiteration of execution of the at least one testing routine, to derive aleast mean square (LMS) error during the analysis of an output of theneural network relative to a corresponding set of output values of thetesting data.

A computer-implemented method includes performing, by a first processor,a testing job flow with a testing data set at least partly within atesting federated area to test a neural network trained to perform ananalytical function, wherein: the neural network is defined by neuralnetwork configuration data that specifies a hyperparameter comprising atleast one of a quantity of artificial neurons within the neural networkor a quantity of rows of the artificial neurons into which theartificial neurons are organized within the neural network; the neuralnetwork configuration data also specifies a trained parameter comprisingat least one of weight values of the artificial neurons, bias values ofthe artificial neurons or firing patterns of the artificial neurons; thetesting data set comprises multiple sets of input values andcorresponding multiple sets of output values generated from a previousperformance of the analytical function with the multiple sets of inputvalues; the performance of the testing job flow comprises executingmultiple iterations, by the first processor, of instructions of at leastone testing routine; the method further comprises, during each iterationof execution of at least one testing routine, providing a set of inputvalues of the testing data set to the neural network, and analyzing anoutput of the neural network generated from the set of input valuesrelative to the corresponding set of output values of the testing datato determine a degree of accuracy of the performance of the analyticalfunction by the neural network; and the testing federated area ismaintained within one or more storage devices to store at least one ofthe at least one testing routine, the testing data set or a testing jobflow definition that defines the testing job flow. The method alsoincludes performing, by the first processor, a transfer flow to transferan object indicative of results of the testing of the neural networkfrom the testing federated area to another federated area, wherein theperformance of the transfer flow comprises executing at least oneiteration, by the first processor, of instructions of at least onetransfer routine, wherein the method further includes: in response tothe degree of accuracy falling below a predetermined minimum threshold,selecting a training federated area that is maintained by the one ormore storage devices, and in which the neural network was at leastpartly trained, to be the other federated area to which the object is tobe transferred, and transferring the object to the selected otherfederated area, wherein the object comprises at least one of a datavalue that specifies the degree of accuracy, at least one set of inputvalues of the testing data set associated with inaccurate output, atleast one set of output values of the testing data set associated withinaccurate output, or inaccurate output generated from at least one setof input values of the testing data set; or in response to the degree ofaccuracy exceeding a predetermined maximum threshold, selecting a usagefederated area that is maintained by the one or more storage devices,and in which the neural network is to be made available for use, andtransferring the object to the selected other federated area, whereinthe object comprises a copy of the neural network configuration data.

The computer-implemented method may further include: during performanceof the transfer flow, executing by the first processor, the at least onetransfer routine to receive the neural network configuration data fromthe training federated area after completion of the training of theneural network at partly within the training federated area; and duringperformance of the testing job flow, executing by the first processor,at least one testing setup routine of the testing job flow to use theneural network configuration data to instantiate the neural network inpreparation for the multiple iterations of execution of the at least onetesting routine. The computer-implemented method may further includeexecuting, by the first processor, the at least one testing setuproutine to use the neural network configuration data to instantiate theneural network among the artificial neurons provided by multipleprocessing cores of a graphics processing unit (GPU) that areprogrammable to operate as the artificial neurons. A field-programmablegate array (FPGA) or an application-specific integrated circuit (ASIC)may implement the artificial neurons with hardware components; and themethod may further include executing, by the first processor, the atleast one testing setup routine to load the neural network configurationdata into the FPGA or the ASIC to instantiate the neural networktherein. The computer-implemented method may further include:performing, by a second processor, a training job flow with a trainingdata set to train the neural network at least partly within the trainingfederated area; and cooperating, by the second processor, with the firstprocessor to perform the transfer flow, wherein the cooperation mayinclude monitoring, by the second processor, the training of the neuralnetwork, and in response to completion of the training, transferring, bythe second processor, the neural network configuration data from thetraining federated area to the testing federated area. Thecomputer-implemented method may further include: during performance ofthe training job flow, executing by the second processor, at least onetraining setup routine of the training job flow to select a first set ofhyperparameters to define the neural network; and in response to thetransfer of the object from the testing federated area to the trainingfederated area in response to the degree of accuracy falling below theminimum threshold, executing by the second processor, the at least onetraining setup routine to select a second set of hyperparameters todefine the neural network that differs from the first set ofhyperparameters.

The computer-implemented method may further include, during performanceof the transfer flow, executing by the first processor the at least onetransfer routine, and in response to the degree of accuracy fallingbetween the minimum threshold and the maximum threshold, performingoperations, by the first processor, including ceasing performance of thetesting job flow; using backpropagation and at least a portion of thetesting data set to further train the neural network; and recommencingperformance of the testing job flow following the further training. Thecomputer-implemented method may further include executing, by the firstprocessor, the at least one transfer routine, and in response to thedegree of accuracy falling below the minimum threshold, performingoperations including: performing, by the first processor, a regressionanalysis of at least a portion of the testing data set associated withinaccurate output by the neural network; and selecting data generated bythe regression analysis as the object to be transmitted to the trainingfederated area. The one or more storage devices may maintain a tree offederated areas that comprises the training federated area, the testingfederated area and the usage federated area; the training federated areamay be located within a first branch of the tree; the testing federatedarea may be located within a second branch of the tree; the usagefederated area may be located within one of a third branch of the tree,and a base federated area of the tree or an intermediate federated areaof the tree from which the first branch and the second branch extend;and access to the usage federated area may be less restricted than tothe training federated area and the testing federated area. Thecomputer-implemented method may further include, during each iterationof execution of the at least one testing routine, deriving by the firstprocessor, a least mean square (LMS) error during the analysis of anoutput of the neural network relative to a corresponding set of outputvalues of the testing data.

An apparatus includes a processor and a storage to store instructionsthat, when executed by the processor, cause the processor to performoperations including receive, at a portal, and from a remote device viaa network, a request to repeat an earlier performance, described in afirst instance log stored in one or more federated areas, of a first jobflow defined in a first job flow definition stored in the one or morefederated areas, or to provide objects to the remote device to enablethe remote device to repeat the earlier performance, wherein: the portalis provided on the network to control access by the remote device to theone or more federated areas via the network; the one or more federatedareas are maintained within one or more storage devices to storemultiple data sets, multiple job flow definitions, multiple taskroutines, multiple result reports or multiple instance logs; and therequest specifies a first instance log identifier of the first instancelog. The processor is also caused to perform operations including: usethe first instance log identifier to retrieve the first instance logfrom among the multiple instance logs stored in the one or morefederated areas, wherein the first instance log comprises a first jobflow identifier of the first job flow definition, a task routineidentifier for each task routine used to perform a task specified in thefirst job flow definition, and a data object identifier for each dataobject associated with the earlier performance of the first job flow;and analyze the first job flow definition to determine whetherperformances of the first job flow comprise use of a neural network. Theprocessor is further caused to perform operations including, in responseto a determination that performances of the first job flow do compriseuse of a neural network, analyze an object associated with the first jobflow to determine whether the neural network was trained to perform ananalytical function using a training data set derived from at least oneperformance of a second job flow defined by a second job flow definitionstored in the one or more federated areas, wherein: the objectassociated with the first job flow comprises at least one of the firstjob flow definition, the first instance log, or a task routine executedduring the earlier performance of the first job flow; and performancesof the second job flow comprise performances of the analytical functionin a manner that does not use a neural network. The processor is stillfurther caused to perform operations including, in response to therequest comprising a request to repeat the earlier performance, inresponse to a determination that performances of the first job flow docomprise use of a neural network, and in response to a determinationthat the neural network was trained using a training data set derivedfrom at least one performance of the second job flow, the processor iscaused to perform operations including: repeat the earlier performanceof the first job flow with one or more data sets associated with theearlier performance of the first job flow, wherein the repetition of theearlier performance of the first job flow comprises execution, by theprocessor, of each task routine identified by a task routine identifierin the first instance log; perform the second job flow with the one ormore data sets associated with the earlier performance of the first jobflow, wherein the performance of the second job flow comprisesexecution, by the processor, of a most recent version of a task routineto perform each task identified by a flow task identifier in the secondjob flow definition; analyze an output of the repetition of the earlierperformance of the first job flow relative to a corresponding output ofthe performance of the second job flow to determine a degree of accuracyin performing the analytical function; and transmit at least the outputof the repetition of the earlier performance of the first job flow andan indication of the degree of accuracy to the requesting device.

The processor may be further caused to perform operations including: usethe first job flow identifier within the first instance log to retrievethe first job flow definition from the one or more federated areas; foreach task routine executed during the earlier performance of the firstjob flow to perform a corresponding task specified in the first job flowdefinition, use the corresponding task routine identifier within thefirst instance log to retrieve the task routine from the one or morefederated areas; and for each data object employed as an input to theearlier performance of the first job flow, use the corresponding dataobject identifier within the first instance log to retrieve the dataobject from the one or more federated areas. The processor may befurther caused to, in response to the request comprising a request toprovide objects to the remote device to enable the remote device torepeat the earlier performance, transmit, to the requesting device, atleast the first job flow definition, each task routine executed duringthe earlier performance of the first job flow, and each data objectemployed as an input to the earlier performance of the first job flow.The processor may be further caused to, in response to the requestcomprising a request to repeat the earlier performance of the first jobflow, perform operations including: for each data object generatedduring the earlier performance of the first job flow, use thecorresponding data object identifier within the first instance log toretrieve the data object from the one or more federated areas, andanalyze a corresponding data object generated during the repetition ofthe earlier performance relative to a corresponding data objectgenerated during the earlier performance; and transmit, to therequesting device, an indication of results of the analysis of at leastone data object generated during the repetition of the earlierperformance relative to at least one corresponding data object generatedduring the earlier performance. The processor may be further caused, inresponse to the determination that performances of the first job flow docomprise use of a neural network, and in response to a determinationthat the neural network was trained using a training data set derivedfrom at least one performance of the second job flow, to performoperations including: use a second job flow identifier provided withinthe selected object associated with the first job flow to retrieve thesecond job flow definition from the one or more federated areas; foreach task specified by a corresponding flow task identifier in thesecond job flow definition, use the corresponding flow task identifierto retrieve a most recent version of a corresponding task routine fromthe one or more federated areas; and in response to the requestcomprising a request to provide objects to the remote device to enablethe remote device to repeat the earlier performance, transmit, to therequesting device, at least the second job flow definition and the mostrecent version of task routine corresponding to each task specified inthe second job flow definition. The processor may be further caused, inresponse to the determination that performances of the first job flow docomprise use of a neural network, and in response to a determinationthat the neural network was trained using a training data set derivedfrom at least one performance of the second job flow, to performoperations including: use a second instance log identifier providedwithin the selected object associated with the first job flow toretrieve a second instance log that describes the at least oneperformance of the second job flow from the one or more federated areas;use a second job flow identifier provided within the second instance logto retrieve the second job flow definition from the one or morefederated areas; for each task routine executed during the at least oneperformance of the second job flow to perform a corresponding taskspecified in the second job flow definition, use the corresponding taskroutine identifier within the second instance log to retrieve the taskroutine from the one or more federated areas; and in response to therequest comprising a request to provide objects to the remote device toenable the remote device to repeat the earlier performance, transmit, tothe requesting device, at least the second job flow definition and eachtask routine executed during the at least one performance of the secondjob flow. The processor may be further caused, in response to therequest comprising a request to repeat the earlier performance, inresponse to a determination that performances of the first job flow docomprise use of a neural network, and in response to a determinationthat the neural network was trained using a training data set derivedfrom at least one performance of the second job flow, to performoperations including: for each data object associated with the at leastone performance of the second job flow and that became part of thetraining data set used to train the neural network of the first jobflow, use the corresponding data object identifier within the secondinstance log to retrieve the data object from the one or more federatedareas; perform a regression analysis of the training data set toidentify one or more characteristics of the training data set; andtransmit an indication of the identified one or more characteristics tothe requesting device.

The processor may be further caused, in response to the determinationthat performances of the first job flow do comprise use of a neuralnetwork, to perform operations including: perform a regression analysiswith a first one of the one or more data sets associated with theearlier performance of the first job flow that was employed as an inputto the earlier performance, and with a second one of the one or moredata sets associated with the earlier performance that was generatedduring the earlier performance to identify one or more characteristicsof the combination of the first and second ones of the one or more datasets; and transmit an indication of the identified one or morecharacteristics to the requesting device. At least one data setassociated with the earlier performance of the first job flow mayinclude neural network configuration data that comprises at least one ofa hyperparameter or a trained parameter; and in response to thedetermination that performances of the first job flow do comprise use ofa neural network, the processor may be caused to transmit the neuralnetwork configuration data to the requesting device.

The processor may be caused, in response to a determination thatperformances of the first job flow do include use of a neural network,and in response to a determination that the neural network of the firstjob flow was trained using a training data set derived from at least oneperformance of the second job flow, to perform operations including: usea third job flow identifier provided within the selected objectassociated with the first job flow to retrieve, from the one or morefederated areas, a third job flow definition that defines a third jobflow to test the neural network or a third instance log identifier thatidentifies an instance log that describes a performance of the third jobflow to test the neural network; retrieve, from the one or more storagedevices, data objects associated with the performance of the third jobflow and that became part of a testing data set used to test the neuralnetwork; and transmit, to the requesting device, the testing data set oran indication of one or more characteristics of the testing set that areidentified in a regression analysis of the testing data set.

A computer-program product tangibly embodied in a non-transitorymachine-readable storage medium, the computer-program product includinginstructions operable to cause a processor to perform operationsincluding receive, at a portal, and from a remote device via a network,a request to repeat an earlier performance, described in a firstinstance log stored in one or more federated areas, of a first job flowdefined in a first job flow definition stored in the one or morefederated areas, or to provide objects to the remote device to enablethe remote device to repeat the earlier performance, wherein: the portalis provided on the network to control access by the remote device to theone or more federated areas via the network; the one or more federatedareas are maintained within one or more storage devices to storemultiple data sets, multiple job flow definitions, multiple taskroutines, multiple result reports or multiple instance logs; and therequest specifies a first instance log identifier of the first instancelog. The processor is also caused to: use the first instance logidentifier to retrieve the first instance log from among the multipleinstance logs stored in the one or more federated areas, wherein thefirst instance log comprises a first job flow identifier of the firstjob flow definition, a task routine identifier for each task routineused to perform a task specified in the first job flow definition, and adata object identifier for each data object associated with the earlierperformance of the first job flow; and analyze the first job flowdefinition to determine whether performances of the first job flowcomprise use of a neural network. The processor is further caused to, inresponse to a determination that performances of the first job flow docomprise use of a neural network, analyze an object associated with thefirst job flow to determine whether the neural network was trained toperform an analytical function using a training data set derived from atleast one performance of a second job flow defined by a second job flowdefinition stored in the one or more federated areas, wherein: theobject associated with the first job flow comprises at least one of thefirst job flow definition, the first instance log, or a task routineexecuted during the earlier performance of the first job flow; andperformances of the second job flow comprise performances of theanalytical function in a manner that does not use a neural network. Theprocessor is still further caused to, in response to the requestcomprising a request to repeat the earlier performance, in response to adetermination that performances of the first job flow do comprise use ofa neural network, and in response to a determination that the neuralnetwork was trained using a training data set derived from at least oneperformance of the second job flow, the processor is caused to performoperations including: repeat the earlier performance of the first jobflow with one or more data sets associated with the earlier performanceof the first job flow, wherein the repetition of the earlier performanceof the first job flow comprises execution, by the processor, of eachtask routine identified by a task routine identifier in the firstinstance log; perform the second job flow with the one or more data setsassociated with the earlier performance of the first job flow, whereinthe performance of the second job flow comprises execution, by theprocessor, of a most recent version of a task routine to perform eachtask identified by a flow task identifier in the second job flowdefinition; analyze an output of the repetition of the earlierperformance of the first job flow relative to a corresponding output ofthe performance of the second job flow to determine a degree of accuracyin performing the analytical function; and transmit at least the outputof the repetition of the earlier performance of the first job flow andan indication of the degree of accuracy to the requesting device.

The processor may be caused to perform operations including: use thefirst job flow identifier within the first instance log to retrieve thefirst job flow definition from the one or more federated areas; for eachtask routine executed during the earlier performance of the first jobflow to perform a corresponding task specified in the first job flowdefinition, use the corresponding task routine identifier within thefirst instance log to retrieve the task routine from the one or morefederated areas; and for each data object employed as an input to theearlier performance of the first job flow, use the corresponding dataobject identifier within the first instance log to retrieve the dataobject from the one or more federated areas. The processor may be causedto, in response to the request comprising a request to provide objectsto the remote device to enable the remote device to repeat the earlierperformance, transmit, to the requesting device, at least the first jobflow definition, each task routine executed during the earlierperformance of the first job flow, and each data object employed as aninput to the earlier performance of the first job flow. The processormay be caused to, in response to the request comprising a request torepeat the earlier performance of the first job flow, perform operationsincluding: for each data object generated during the earlier performanceof the first job flow, use the corresponding data object identifierwithin the first instance log to retrieve the data object from the oneor more federated areas, and analyze a corresponding data objectgenerated during the repetition of the earlier performance relative to acorresponding data object generated during the earlier performance; andtransmit, to the requesting device, an indication of results of theanalysis of at least one data object generated during the repetition ofthe earlier performance relative to at least one corresponding dataobject generated during the earlier performance. The processor may becaused, in response to the determination that performances of the firstjob flow do comprise use of a neural network, and in response to adetermination that the neural network was trained using a training dataset derived from at least one performance of the second job flow, toperform operations including: use a second job flow identifier providedwithin the selected object associated with the first job flow toretrieve the second job flow definition from the one or more federatedareas; for each task specified by a corresponding flow task identifierin the second job flow definition, use the corresponding flow taskidentifier to retrieve a most recent version of a corresponding taskroutine from the one or more federated areas; and in response to therequest comprising a request to provide objects to the remote device toenable the remote device to repeat the earlier performance, transmit, tothe requesting device, at least the second job flow definition and themost recent version of task routine corresponding to each task specifiedin the second job flow definition. The processor may be caused, inresponse to the determination that performances of the first job flow docomprise use of a neural network, and in response to a determinationthat the neural network was trained using a training data set derivedfrom at least one performance of the second job flow, to performoperations including: use a second instance log identifier providedwithin the selected object associated with the first job flow toretrieve a second instance log that describes the at least oneperformance of the second job flow from the one or more federated areas;use a second job flow identifier provided within the second instance logto retrieve the second job flow definition from the one or morefederated areas; for each task routine executed during the at least oneperformance of the second job flow to perform a corresponding taskspecified in the second job flow definition, use the corresponding taskroutine identifier within the second instance log to retrieve the taskroutine from the one or more federated areas; and in response to therequest comprising a request to provide objects to the remote device toenable the remote device to repeat the earlier performance, transmit, tothe requesting device, at least the second job flow definition and eachtask routine executed during the at least one performance of the secondjob flow. The processor may be caused, in response to the requestcomprising a request to repeat the earlier performance, in response to adetermination that performances of the first job flow do include use ofa neural network, and in response to a determination that the neuralnetwork was trained using a training data set derived from at least oneperformance of the second job flow, to perform operations including: foreach data object associated with the at least one performance of thesecond job flow and that became part of the training data set used totrain the neural network of the first job flow, use the correspondingdata object identifier within the second instance log to retrieve thedata object from the one or more federated areas; perform a regressionanalysis of the training data set to identify one or morecharacteristics of the training data set; and transmit an indication ofthe identified one or more characteristics to the requesting device.

The processor may be caused, in response to the determination thatperformances of the first job flow do comprise use of a neural network,to perform operations including: perform a regression analysis with afirst one of the one or more data sets associated with the earlierperformance of the first job flow that was employed as an input to theearlier performance, and with a second one of the one or more data setsassociated with the earlier performance that was generated during theearlier performance to identify one or more characteristics of thecombination of the first and second ones of the one or more data sets;and transmit an indication of the identified one or more characteristicsto the requesting device. At least one data set associated with theearlier performance of the first job flow may include neural networkconfiguration data that comprises at least one of a hyperparameter or atrained parameter; and in response to the determination thatperformances of the first job flow do comprise use of a neural network,the processor may be caused to transmit the neural network configurationdata to the requesting device. The processor may be caused, in responseto a determination that performances of the first job flow do compriseuse of a neural network, and in response to a determination that theneural network of the first job flow was trained using a training dataset derived from at least one performance of the second job flow, toperform operations including: use a third job flow identifier providedwithin the selected object associated with the first job flow toretrieve, from the one or more federated areas, a third job flowdefinition that defines a third job flow to test the neural network or athird instance log identifier that identifies an instance log thatdescribes a performance of the third job flow to test the neuralnetwork; retrieve, from the one or more storage devices, data objectsassociated with the performance of the third job flow and that becamepart of a testing data set used to test the neural network; andtransmit, to the requesting device, the testing data set or anindication of one or more characteristics of the testing set that areidentified in a regression analysis of the testing data set.

A computer-implemented method includes receiving, by a processor at aportal, and from a remote device via a network, a request to repeat anearlier performance, described in a first instance log stored in one ormore federated areas, of a first job flow defined in a first job flowdefinition stored in the one or more federated areas, or to provideobjects to the remote device to enable the remote device to repeat theearlier performance, wherein: the portal is provided on the network tocontrol access by the remote device to the one or more federated areasvia the network; the one or more federated areas are maintained withinone or more storage devices to store multiple data sets, multiple jobflow definitions, multiple task routines, multiple result reports ormultiple instance logs; and the request specifies a first instance logidentifier of the first instance log. The method also includes using thefirst instance log identifier to retrieve the first instance log fromamong the multiple instance logs stored in the one or more federatedareas, wherein the first instance log comprises a first job flowidentifier of the first job flow definition, a task routine identifierfor each task routine used to perform a task specified in the first jobflow definition, and a data object identifier for each data objectassociated with the earlier performance of the first job flow; andanalyzing, by the processor, the first job flow definition to determinewhether performances of the first job flow comprise use of a neuralnetwork. The method further includes in response to a determination thatperformances of the first job flow do comprise use of a neural network,analyzing, by the processor, an object associated with the first jobflow to determine whether the neural network was trained to perform ananalytical function using a training data set derived from at least oneperformance of a second job flow defined by a second job flow definitionstored in the one or more federated areas, wherein: the objectassociated with the first job flow comprises at least one of the firstjob flow definition, the first instance log, or a task routine executedduring the earlier performance of the first job flow; and performancesof the second job flow comprise performances of the analytical functionin a manner that does not use a neural network. The method still furtherincludes in response to the request comprising a request to repeat theearlier performance, in response to a determination that performances ofthe first job flow do comprise use of a neural network, and in responseto a determination that the neural network was trained using a trainingdata set derived from at least one performance of the second job flow,performing operations including: repeating, by the processor, theearlier performance of the first job flow with one or more data setsassociated with the earlier performance of the first job flow, whereinthe repetition of the earlier performance of the first job flowcomprises execution, by the processor, of each task routine identifiedby a task routine identifier in the first instance log; performing, bythe processor, the second job flow with the one or more data setsassociated with the earlier performance of the first job flow, whereinthe performance of the second job flow comprises execution, by theprocessor, of a most recent version of a task routine to perform eachtask identified by a flow task identifier in the second job flowdefinition; analyzing, by the processor, an output of the repetition ofthe earlier performance of the first job flow relative to acorresponding output of the performance of the second job flow todetermine a degree of accuracy in performing the analytical function;and transmitting, from the processor, at least the output of therepetition of the earlier performance of the first job flow and anindication of the degree of accuracy to the requesting device.

The method may include: using the first job flow identifier within thefirst instance log to retrieve the first job flow definition from theone or more federated areas; for each task routine executed during theearlier performance of the first job flow to perform a correspondingtask specified in the first job flow definition, using the correspondingtask routine identifier within the first instance log to retrieve thetask routine from the one or more federated areas; and for each dataobject employed as an input to the earlier performance of the first jobflow, using the corresponding data object identifier within the firstinstance log to retrieve the data object from the one or more federatedareas. The method may include, in response to the request comprising arequest to provide objects to the remote device to enable the remotedevice to repeat the earlier performance, transmitting, from theprocessor and to the requesting device, at least the first job flowdefinition, each task routine executed during the earlier performance ofthe first job flow, and each data object employed as an input to theearlier performance of the first job flow. The method may include, inresponse to the request comprising a request to repeat the earlierperformance of the first job flow, performing operations including: foreach data object generated during the earlier performance of the firstjob flow, using the corresponding data object identifier within thefirst instance log to retrieve the data object from the one or morefederated areas, and analyzing, by the processor, a corresponding dataobject generated during the repetition of the earlier performancerelative to a corresponding data object generated during the earlierperformance; and transmitting, from the processor and to the requestingdevice, an indication of results of the analysis of at least one dataobject generated during the repetition of the earlier performancerelative to at least one corresponding data object generated during theearlier performance. The method may further include, in response to thedetermination that performances of the first job flow do comprise use ofa neural network, and in response to a determination that the neuralnetwork was trained using a training data set derived from at least oneperformance of the second job flow, performing operations including:using a second job flow identifier provided within the selected objectassociated with the first job flow to retrieve the second job flowdefinition from the one or more federated areas; for each task specifiedby a corresponding flow task identifier in the second job flowdefinition, using the corresponding flow task identifier to retrieve amost recent version of a corresponding task routine from the one or morefederated areas; and in response to the request comprising a request toprovide objects to the remote device to enable the remote device torepeat the earlier performance, transmitting, from the processor and tothe requesting device, at least the second job flow definition and themost recent version of task routine corresponding to each task specifiedin the second job flow definition. The method may further include, inresponse to the determination that performances of the first job flow docomprise use of a neural network, and in response to a determinationthat the neural network was trained using a training data set derivedfrom at least one performance of the second job flow, performingoperations including: using a second instance log identifier providedwithin the selected object associated with the first job flow toretrieve a second instance log that describes the at least oneperformance of the second job flow from the one or more federated areas;using a second job flow identifier provided within the second instancelog to retrieve the second job flow definition from the one or morefederated areas; for each task routine executed during the at least oneperformance of the second job flow to perform a corresponding taskspecified in the second job flow definition, using the correspondingtask routine identifier within the second instance log to retrieve thetask routine from the one or more federated areas; and in response tothe request comprising a request to provide objects to the remote deviceto enable the remote device to repeat the earlier performance,transmitting, from the processor and to the requesting device, at leastthe second job flow definition and each task routine executed during theat least one performance of the second job flow. The method may furtherinclude, in response to the request comprising a request to repeat theearlier performance, in response to a determination that performances ofthe first job flow do comprise use of a neural network, and in responseto a determination that the neural network was trained using a trainingdata set derived from at least one performance of the second job flow,performing operations including: for each data object associated withthe at least one performance of the second job flow and that became partof the training data set used to train the neural network of the firstjob flow, using the corresponding data object identifier within thesecond instance log to retrieve the data object from the one or morefederated areas; performing, by the processor, a regression analysis ofthe training data set to identify one or more characteristics of thetraining data set; and transmitting, from the processor, an indicationof the identified one or more characteristics to the requesting device.

The method may further include, in response to the determination thatperformances of the first job flow do comprise use of a neural network,performing operations including: performing, by the processor, aregression analysis with a first one of the one or more data setsassociated with the earlier performance of the first job flow that wasemployed as an input to the earlier performance, and with a second oneof the one or more data sets associated with the earlier performancethat was generated during the earlier performance to identify one ormore characteristics of the combination of the first and second ones ofthe one or more data sets; and transmitting, from the processor, anindication of the identified one or more characteristics to therequesting device. The method may further include: at least one data setassociated with the earlier performance of the first job flow comprisesneural network configuration data that comprises at least one of ahyperparameter or a trained parameter; and the method comprises, inresponse to the determination that performances of the first job flow docomprise use of a neural network, transmitting the neural networkconfiguration data from the processor and to the requesting device. Themethod may further include, in response to a determination thatperformances of the first job flow do comprise use of a neural network,and in response to a determination that the neural network of the firstjob flow was trained using a training data set derived from at least oneperformance of the second job flow, performing operations including:using a third job flow identifier provided within the selected objectassociated with the first job flow to retrieve, from the one or morefederated areas, a third job flow definition that defines a third jobflow to test the neural network or a third instance log identifier thatidentifies an instance log that describes a performance of the third jobflow to test the neural network; retrieving, from the one or morestorage devices, data objects associated with the performance of thethird job flow and that became part of a testing data set used to testthe neural network; and transmitting, from the processor and to therequesting device, the testing data set or an indication of one or morecharacteristics of the testing set that are identified in a regressionanalysis of the testing data set.

An apparatus includes a processor and a storage to store instructionsthat, when executed by the processor, cause the processor to performoperations including: receive a first request to perform an analyticalfunction with a first data set comprising multiple sets of input valuesto generate multiple corresponding sets of output values; assign, aspart of a first assignment of processing resources, at least a portionof currently available instruction-based processing resources to a firstnon-neuromorphic performance of the analytical function with the firstdata set, and with at least a predetermined level of throughput, throughexecution of instructions implementing the analytical function by one ormore processor cores; and after the assignment of instruction-basedprocessing resources to the first non-neuromorphic performance, analyzea state of remaining processing resources. The processor is also causedto, in response to current availability of sufficient remainingprocessing resources to enable a first neuromorphic performance of theanalytical function with at least a subset of the sets of input valuesof the first data set through use of a neural network defined by atleast a set of hyperparameters, and at least partly in parallel with thefirst non-neuromorphic performance: assign, as part of the firstassignment, at least a portion of the remaining processing resources tothe first neuromorphic performance; analyze the sets of output valuesgenerated from the subset of the sets of input values by the firstneuromorphic performance relative to corresponding sets of output valuesgenerated by the first non-neuromorphic performance to determine a firstdegree of accuracy of the neural network in performing the analyticalfunction; and in response to at least the first degree of accuracyexceeding a predetermined higher threshold, in response to receipt of asecond request from a requesting device to perform the analyticalfunction with a second data set comprising multiple sets of input valuesto generate multiple corresponding sets of output values, and inresponse to current availability of sufficient processing resources toenable a second neuromorphic performance of the analytical function withthe second data set through use of the neural network, and with at leastthe predetermined level of throughput, the processor is caused toperform further operations: The further actions include: assign, as partof a second assignment of processing resources, at least a portion ofcurrently available processing resources to the second neuromorphicperformance; after the assignment of processing resources to the secondneuromorphic performance, analyze a state of remaining instruction-basedprocessing resources currently available; and in response to currentavailability of sufficient remaining instruction-based processingresources to enable a second non-neuromorphic performance of theanalytical function with at least a subset of the sets of input valuesof the second data set through execution of instructions implementingthe analytical function by one or more processor cores, and at leastpartly in parallel with the second neuromorphic performance, theprocessor is caused to perform still further operations. The stillfurther operations include: assign, as part of the second assignment, atleast a portion of the remaining instruction-based processing resourcesto the second non-neuromorphic performance; analyze the sets of outputvalues generated from the subset of the sets of input values by thesecond neuromorphic performance relative to corresponding sets of outputvalues generated by the second non-neuromorphic performance to determinea second degree of accuracy of the neural network in performing theanalytical function; and in response to at least the second degree ofaccuracy exceeding the predetermined higher threshold, transmit themultiple sets of output values generated from the second data set by thesecond neuromorphic performance to the requesting device.

The assignment of instruction-based processing resources to the firstnon-neuromorphic performance may include an assignment of one or moreprocessor cores of one or more processors comprising at least one of oneor more central processing units (CPUs), or one or more graphicsprocessing units (GPUs). The one or more processor cores of the one ormore processors may be processors distributed among multiple nodedevices of a grid of node devices; and the assignment ofinstruction-based processing resources to the first non-neuromorphicperformance may include an assignment of processing resources of themultiple node devices to the first non-neuromorphic performance. Theassignment of at least a portion of remaining processing resources tothe first neuromorphic performance may include an assignment of at leasta subset of one or more remaining processor cores, or an assignment ofat least a portion of each of one or more neuromorphic devices; each ofthe remaining processor cores may be programmable to instantiate atleast a portion of the neural network; each of the neuromorphic devicesmay include at least one of a field-programmable gate array (FPGA), oran application-specific integrated circuit (ASIC); and each of theneuromorphic devices may include sets of circuits that each implement anartificial neuron able to be included in the neural network.

The set of hyperparameters may specify a quantity of artificial neuronswithin the neural network; and the analysis of the state of remainingprocessing resources after the assignment of instruction-basedprocessing resources to the first non-neuromorphic performance mayinclude a determination of whether sufficient processing resources areavailable to instantiate the specified quantity of artificial neurons.The processor may be caused, in response to at least the second degreeof accuracy exceeding the predetermined higher threshold, in response toreceipt of a third request from a requesting device to perform theanalytical function with a third data set comprising multiple sets ofinput values to generate multiple corresponding sets of output values,and in response to current availability of sufficient processingresources to enable a third neuromorphic performance of the analyticalfunction with the third data set through use of the neural network, andwith at least the predetermined level of throughput, to: assign, as partof a third assignment of processing resources, at least a portion ofcurrently available processing resources to the third neuromorphicperformance; and refrain from assigning processing resources to a thirdnon-neuromorphic performance of the analytical function with the thirddata set through execution of instructions implementing the analyticalfunction by one or more processor cores.

The processor may be caused, in response to at least the first degree ofaccuracy falling below a predetermined lower threshold that is lowerthan the predetermined higher threshold, provide an indication that theperformance of the analytical function by the neural network is deemedinsufficiently accurate to be used. The processor may be caused, inresponse to at least the first degree of accuracy falling below thepredetermined higher threshold and above the predetermined lowerthreshold, to perform operations including: assign at least a portion ofcurrently available processing resources to instantiating the neuralnetwork in a training mode; and use backpropagation to train the neuralnetwork with the multiple sets of input values of the first data set andthe corresponding multiple sets of output values generated by the firstnon-neuromorphic performance. The first neuromorphic performance and thefirst non-neuromorphic performance may occur at least partly within atesting federated area maintained by one or more storage devices tostore the first data set, a first neuromorphic job flow definition, atleast one task routine to perform at least one task defined by the firstneuromorphic job flow definition, a first non-neuromorphic job flowdefinition, and at least one task routine to perform at least one taskdefined by the first non-neuromorphic job flow definition; the neuralnetwork may be trained at least partly within a training federated areamaintained by the one or more storage devices to store at least onetraining data set, a training job flow definition, and at least one taskroutine to perform at least one task defined by the training job flowdefinition; and in response to at least the first degree of accuracyfalling below the predetermined lower threshold, the processor may becaused to transfer the indication that the performance of the analyticalfunction by the neural network is deemed insufficiently accurate to beused from the testing federated area to the training federated area totrigger retraining of the neural network within another set ofhyperparameters. The second neuromorphic performance and the secondnon-neuromorphic performance may occur at least partly within a usagefederated area maintained by the one or more storage devices to storethe second data set, a second neuromorphic job flow definition, at leastone task routine to perform at least one task defined by the secondneuromorphic job flow definition, a second non-neuromorphic job flowdefinition, and at least one task routine to perform at least one taskdefined by the second non-neuromorphic job flow definition; and inresponse to at least the second degree of accuracy exceeding thepredetermined higher threshold, the processor may be caused to transferneural network configuration data that defines the neural network fromthe testing federated area to the usage federated area to enableinstantiation of the neural network to support the second neuromorphicperformance.

A computer-program product tangibly embodied in a non-transitorymachine-readable storage medium, the computer-program product includinginstructions operable to cause a processor to perform operationsincluding: receive a first request to perform an analytical functionwith a first data set comprising multiple sets of input values togenerate multiple corresponding sets of output values; assign, as partof a first assignment of processing resources, at least a portion ofcurrently available instruction-based processing resources to a firstnon-neuromorphic performance of the analytical function with the firstdata set, and with at least a predetermined level of throughput, throughexecution of instructions implementing the analytical function by one ormore processor cores; and after the assignment of instruction-basedprocessing resources to the first non-neuromorphic performance, analyzea state of remaining processing resources. The processor is also causedto, in response to current availability of sufficient remainingprocessing resources to enable a first neuromorphic performance of theanalytical function with at least a subset of the sets of input valuesof the first data set through use of a neural network defined by atleast a set of hyperparameters, and at least partly in parallel with thefirst non-neuromorphic performance: assign, as part of the firstassignment, at least a portion of the remaining processing resources tothe first neuromorphic performance; analyze the sets of output valuesgenerated from the subset of the sets of input values by the firstneuromorphic performance relative to corresponding sets of output valuesgenerated by the first non-neuromorphic performance to determine a firstdegree of accuracy of the neural network in performing the analyticalfunction; and in response to at least the first degree of accuracyexceeding a predetermined higher threshold, in response to receipt of asecond request from a requesting device to perform the analyticalfunction with a second data set comprising multiple sets of input valuesto generate multiple corresponding sets of output values, and inresponse to current availability of sufficient processing resources toenable a second neuromorphic performance of the analytical function withthe second data set through use of the neural network, and with at leastthe predetermined level of throughput, the processor is caused toperform further operations: The further actions include: assign, as partof a second assignment of processing resources, at least a portion ofcurrently available processing resources to the second neuromorphicperformance; after the assignment of processing resources to the secondneuromorphic performance, analyze a state of remaining instruction-basedprocessing resources currently available; and in response to currentavailability of sufficient remaining instruction-based processingresources to enable a second non-neuromorphic performance of theanalytical function with at least a subset of the sets of input valuesof the second data set through execution of instructions implementingthe analytical function by one or more processor cores, and at leastpartly in parallel with the second neuromorphic performance, theprocessor is caused to perform still further operations. The stillfurther operations include: assign, as part of the second assignment, atleast a portion of the remaining instruction-based processing resourcesto the second non-neuromorphic performance; analyze the sets of outputvalues generated from the subset of the sets of input values by thesecond neuromorphic performance relative to corresponding sets of outputvalues generated by the second non-neuromorphic performance to determinea second degree of accuracy of the neural network in performing theanalytical function; and in response to at least the second degree ofaccuracy exceeding the predetermined higher threshold, transmit themultiple sets of output values generated from the second data set by thesecond neuromorphic performance to the requesting device.

The assignment of instruction-based processing resources to the firstnon-neuromorphic performance may include an assignment of one or moreprocessor cores of one or more processors comprising at least one of oneor more central processing units (CPUs), or one or more graphicsprocessing units (GPUs). The one or more processor cores of the one ormore processors may be processors distributed among multiple nodedevices of a grid of node devices; and the assignment ofinstruction-based processing resources to the first non-neuromorphicperformance may include an assignment of processing resources of themultiple node devices to the first non-neuromorphic performance. Theassignment of at least a portion of remaining processing resources tothe first neuromorphic performance may include an assignment of at leasta subset of one or more remaining processor cores, or an assignment ofat least a portion of each of one or more neuromorphic devices; each ofthe remaining processor cores may be programmable to instantiate atleast a portion of the neural network; each of the neuromorphic devicesmay include at least one of a field-programmable gate array (FPGA), oran application-specific integrated circuit (ASIC); and each of theneuromorphic devices may include sets of circuits that each implement anartificial neuron able to be included in the neural network.

The set of hyperparameters may specify a quantity of artificial neuronswithin the neural network; and the analysis of the state of remainingprocessing resources after the assignment of instruction-basedprocessing resources to the first non-neuromorphic performance mayinclude a determination of whether sufficient processing resources areavailable to instantiate the specified quantity of artificial neurons.The computer-program product of claim 11, wherein the processor may becaused, in response to at least the second degree of accuracy exceedingthe predetermined higher threshold, in response to receipt of a thirdrequest from a requesting device to perform the analytical function witha third data set comprising multiple sets of input values to generatemultiple corresponding sets of output values, and in response to currentavailability of sufficient processing resources to enable a thirdneuromorphic performance of the analytical function with the third dataset through use of the neural network, and with at least thepredetermined level of throughput, to: assign, as part of a thirdassignment of processing resources, at least a portion of currentlyavailable processing resources to the third neuromorphic performance;and refrain from assigning processing resources to a thirdnon-neuromorphic performance of the analytical function with the thirddata set through execution of instructions implementing the analyticalfunction by one or more processor cores.

The processor may be caused, in response to at least the first degree ofaccuracy falling below a predetermined lower threshold that is lowerthan the predetermined higher threshold, provide an indication that theperformance of the analytical function by the neural network is deemedinsufficiently accurate to be used. The processor may be caused, inresponse to at least the first degree of accuracy falling below thepredetermined higher threshold and above the predetermined lowerthreshold, to perform operations including: assign at least a portion ofcurrently available processing resources to instantiating the neuralnetwork in a training mode; and use backpropagation to train the neuralnetwork with the multiple sets of input values of the first data set andthe corresponding multiple sets of output values generated by the firstnon-neuromorphic performance. The first neuromorphic performance and thefirst non-neuromorphic performance may occur at least partly within atesting federated area maintained by one or more storage devices tostore the first data set, a first neuromorphic job flow definition, atleast one task routine to perform at least one task defined by the firstneuromorphic job flow definition, a first non-neuromorphic job flowdefinition, and at least one task routine to perform at least one taskdefined by the first non-neuromorphic job flow definition; the neuralnetwork may be trained at least partly within a training federated areamaintained by the one or more storage devices to store at least onetraining data set, a training job flow definition, and at least one taskroutine to perform at least one task defined by the training job flowdefinition; and in response to at least the first degree of accuracyfalling below the predetermined lower threshold, the processor may becaused to transfer the indication that the performance of the analyticalfunction by the neural network is deemed insufficiently accurate to beused from the testing federated area to the training federated area totrigger retraining of the neural network within another set ofhyperparameters. The second neuromorphic performance and the secondnon-neuromorphic performance may occur at least partly within a usagefederated area maintained by the one or more storage devices to storethe second data set, a second neuromorphic job flow definition, at leastone task routine to perform at least one task defined by the secondneuromorphic job flow definition, a second non-neuromorphic job flowdefinition, and at least one task routine to perform at least one taskdefined by the second non-neuromorphic job flow definition; and inresponse to at least the second degree of accuracy exceeding thepredetermined higher threshold, the processor may be caused to transferneural network configuration data that defines the neural network fromthe testing federated area to the usage federated area to enableinstantiation of the neural network to support the second neuromorphicperformance.

A computer-implemented method includes: receiving, by a processor, afirst request to perform an analytical function with a first data setcomprising multiple sets of input values to generate multiplecorresponding sets of output values; assigning, by the processor and aspart of a first assignment of processing resources, at least a portionof currently available instruction-based processing resources to a firstnon-neuromorphic performance of the analytical function with the firstdata set, and with at least a predetermined level of throughput, throughexecution of instructions implementing the analytical function by one ormore processor cores; and after the assignment of instruction-basedprocessing resources to the first non-neuromorphic performance,analyzing, by the processor, a state of remaining processing resources.The method further includes, in response to current availability ofsufficient remaining processing resources to enable a first neuromorphicperformance of the analytical function with at least a subset of thesets of input values of the first data set through use of a neuralnetwork defined by at least a set of hyperparameters, and at leastpartly in parallel with the first non-neuromorphic performance:assigning, by the processor and as part of the first assignment, atleast a portion of the remaining processing resources to the firstneuromorphic performance; analyzing, by the processor, the sets ofoutput values generated from the subset of the sets of input values bythe first neuromorphic performance relative to corresponding sets ofoutput values generated by the first non-neuromorphic performance todetermine a first degree of accuracy of the neural network in performingthe analytical function; and in response to at least the first degree ofaccuracy exceeding a predetermined higher threshold, in response toreceipt of a second request from a requesting device to perform theanalytical function with a second data set comprising multiple sets ofinput values to generate multiple corresponding sets of output values,and in response to current availability of sufficient processingresources to enable a second neuromorphic performance of the analyticalfunction with the second data set through use of the neural network, andwith at least the predetermined level of throughput, performing furtheroperations. The further operations include: assigning, by the processorand as part of a second assignment of processing resources, at least aportion of currently available processing resources to the secondneuromorphic performance; after the assignment of processing resourcesto the second neuromorphic performance, analyzing, by the processor, astate of remaining instruction-based processing resources currentlyavailable; and in response to current availability of sufficientremaining instruction-based processing resources to enable a secondnon-neuromorphic performance of the analytical function with at least asubset of the sets of input values of the second data set throughexecution of instructions implementing the analytical function by one ormore processor cores, and at least partly in parallel with the secondneuromorphic performance, performing still further operations. The stillfurther operations include: assigning, by the processor and as part ofthe second assignment, at least a portion of the remaininginstruction-based processing resources to the second non-neuromorphicperformance; analyzing, by the processor, the sets of output valuesgenerated from the subset of the sets of input values by the secondneuromorphic performance relative to corresponding sets of output valuesgenerated by the second non-neuromorphic performance to determine asecond degree of accuracy of the neural network in performing theanalytical function; and in response to at least the second degree ofaccuracy exceeding the predetermined higher threshold, transmitting,from the processor, the multiple sets of output values generated fromthe second data set by the second neuromorphic performance to therequesting device.

The assignment of instruction-based processing resources to the firstnon-neuromorphic performance may include an assignment of one or moreprocessor cores of one or more processors comprising at least one of oneor more central processing units (CPUs), or one or more graphicsprocessing units (GPUs). The one or more processor cores of the one ormore processors may be processors distributed among multiple nodedevices of a grid of node devices; and the assignment ofinstruction-based processing resources to the first non-neuromorphicperformance may include an assignment of processing resources of themultiple node devices to the first non-neuromorphic performance. Theassignment of at least a portion of remaining processing resources tothe first neuromorphic performance may include an assignment of at leasta subset of one or more remaining processor cores, or an assignment ofat least a portion of each of one or more neuromorphic devices; each ofthe remaining processor cores may be programmable to instantiate atleast a portion of the neural network; each of the neuromorphic devicesmay include at least one of a field-programmable gate array (FPGA), oran application-specific integrated circuit (ASIC); and each of theneuromorphic devices may include sets of circuits that each implement anartificial neuron able to be included in the neural network.

The set of hyperparameters may specify a quantity of artificial neuronswithin the neural network; and the analysis of the state of remainingprocessing resources after the assignment of instruction-basedprocessing resources to the first non-neuromorphic performance mayinclude a determination of whether sufficient processing resources areavailable to instantiate the specified quantity of artificial neurons.The computer-implemented method may further include in response to atleast the second degree of accuracy exceeding the predetermined higherthreshold, in response to receipt of a third request from a requestingdevice to perform the analytical function with a third data setcomprising multiple sets of input values to generate multiplecorresponding sets of output values, and in response to currentavailability of sufficient processing resources to enable a thirdneuromorphic performance of the analytical function with the third dataset through use of the neural network, and with at least thepredetermined level of throughput, performing operations including:assigning, by the processor and as part of a third assignment ofprocessing resources, at least a portion of currently availableprocessing resources to the third neuromorphic performance; andrefraining from assigning processing resources to a thirdnon-neuromorphic performance of the analytical function with the thirddata set through execution of instructions implementing the analyticalfunction by one or more processor cores.

The computer-implemented method may further include, in response to atleast the first degree of accuracy falling below a predetermined lowerthreshold that is lower than the predetermined higher threshold,providing an indication that the performance of the analytical functionby the neural network is deemed insufficiently accurate to be used. Thecomputer-implemented method may further include, in response to at leastthe first degree of accuracy falling below the predetermined higherthreshold and above the predetermined lower threshold, performingoperations including: assigning, by the processor, at least a portion ofcurrently available processing resources to instantiating the neuralnetwork in a training mode; and using backpropagation to train theneural network with the multiple sets of input values of the first dataset and the corresponding multiple sets of output values generated bythe first non-neuromorphic performance. The computer-implemented methodmay further include: the first neuromorphic performance and the firstnon-neuromorphic performance occur at least partly within a testingfederated area maintained by one or more storage devices to store thefirst data set, a first neuromorphic job flow definition, at least onetask routine to perform at least one task defined by the firstneuromorphic job flow definition, a first non-neuromorphic job flowdefinition, and at least one task routine to perform at least one taskdefined by the first non-neuromorphic job flow definition; the neuralnetwork was trained at least partly within a training federated areamaintained by the one or more storage devices to store at least onetraining data set, a training job flow definition, and at least one taskroutine to perform at least one task defined by the training job flowdefinition; and in response to at least the first degree of accuracyfalling below the predetermined lower threshold, transferring theindication that the performance of the analytical function by the neuralnetwork is deemed insufficiently accurate to be used from the testingfederated area to the training federated area to trigger retraining ofthe neural network within another set of hyperparameters. Thecomputer-implemented method may further include: the second neuromorphicperformance and the second non-neuromorphic performance occur at leastpartly within a usage federated area maintained by the one or morestorage devices to store the second data set, a second neuromorphic jobflow definition, at least one task routine to perform at least one taskdefined by the second neuromorphic job flow definition, a secondnon-neuromorphic job flow definition, and at least one task routine toperform at least one task defined by the second non-neuromorphic jobflow definition; and in response to at least the second degree ofaccuracy exceeding the predetermined higher threshold, transferringneural network configuration data that defines the neural network fromthe testing federated area to the usage federated area to enableinstantiation of the neural network to support the second neuromorphicperformance.

The foregoing, together with other features and embodiments, will becomemore apparent upon referring to the following specification, claims, andaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is described in conjunction with the appendedfigures:

FIG. 1 illustrates a block diagram that provides an illustration of thehardware components of a computing system, according to some embodimentsof the present technology.

FIG. 2 illustrates an example network including an example set ofdevices communicating with each other over an exchange system and via anetwork, according to some embodiments of the present technology.

FIG. 3 illustrates a representation of a conceptual model of acommunications protocol system, according to some embodiments of thepresent technology.

FIG. 4 illustrates a communications grid computing system including avariety of control and worker nodes, according to some embodiments ofthe present technology.

FIG. 5 illustrates a flow chart showing an example process for adjustinga communications grid or a work project in a communications grid after afailure of a node, according to some embodiments of the presenttechnology.

FIG. 6 illustrates a portion of a communications grid computing systemincluding a control node and a worker node, according to someembodiments of the present technology.

FIG. 7 illustrates a flow chart showing an example process for executinga data analysis or processing project, according to some embodiments ofthe present technology.

FIG. 8 illustrates a block diagram including components of an EventStream Processing Engine (ESPE), according to embodiments of the presenttechnology.

FIG. 9 illustrates a flow chart showing an example process includingoperations performed by an event stream processing engine, according tosome embodiments of the present technology.

FIG. 10 illustrates an ESP system interfacing between a publishingdevice and multiple event subscribing devices, according to embodimentsof the present technology.

FIG. 11 illustrates a flow chart showing an example process ofgenerating and using a machine-learning model according to some aspects.

FIG. 12 illustrates an example machine-learning model based on a neuralnetwork.

FIGS. 13A and 13B, together, illustrate an example embodiment of adistributed processing system.

FIGS. 14A and 14B, together, illustrate an example alternate embodimentof a distributed processing system.

FIGS. 15A, 15B and 15C each illustrate an example hierarchical set offederated areas.

FIGS. 16A, 16B, 16C, 16D and 16E, together, illustrate an exampleformation of a hierarchical set of federated areas.

FIGS. 17A, 17B, 17C, 17D, 17E and 17F, together, illustrate an exampleof defining and documenting a performance of a job flow.

FIGS. 18A, 18B, 18C, 18D and 18E, together, illustrate an example of afederated device storing and organizing objects in a federated area.

FIGS. 19A and 19B each illustrate an example of organization of objectidentifiers.

FIGS. 20A and 20B, together, illustrate an example of a federated deviceretrieving objects from a federated area.

FIGS. 21A, 21B and 21C, together, illustrate an example formation of atransfer area.

FIGS. 22A, 22B and 22C, together, illustrate an example of an automatedtransfer of task routines.

FIGS. 23A, 23B, 23C, 23D and 23E, together, illustrate examples ofautomated transfers of data sets defining a neural network.

FIGS. 24A, 24B and 24C, together, illustrate an example transition fromnon-neuromorphic processing to neuromorphic processing to perform ananalytical function.

FIGS. 25A, 25B and 25C, together, illustrate an example of training aneural network to perform an analytical function as part of a transitionto neuromorphic processing.

FIGS. 26A and 26B each illustrate an example of transitioning from useof a non-neuromorphic implementation of an analytical function to aneuromorphic implementation.

FIGS. 27A, 27B, 27C, 27D, 27E, 27F, 27G and 27H, together, illustrateexamples of automated transfers of objects associated with training andtesting of a neural network.

FIGS. 28A, 28B, 28C, 28D, 28E and 28F, together, illustrate an exampleembodiment of a logic flow of a federated device storing objects in afederated area.

FIGS. 29A and 29B, together, illustrate another example embodiment of alogic flow of a federated device storing objects in a federated area

FIGS. 30A and 30B, together, illustrate still another example embodimentof a logic flow of a federated device storing objects in a federatedarea.

FIGS. 31A, 31B, 31C and 31D, together, illustrate an example embodimentof a logic flow of a federated device deleting objects stored within afederated area.

FIGS. 32A and 32B, together, illustrate an example embodiment of a logicflow of a federated device either repeating an earlier performance of ajob flow that generated specified result report or instance log, ortransmitting objects to enable a requesting device to do so.

FIGS. 33A and 33B, together, illustrate an example embodiment of a logicflow of a federated device performing a job flow.

FIGS. 34A and 34B, together, illustrate another example embodiment of alogic flow of a federated device performing a job flow.

FIG. 35 illustrates an example embodiment of a logic flow ofinstantiation of a transfer area for the automated transfer of object(s)between two federated areas.

FIG. 36 illustrates an example embodiment of a logic flow of anautomated transfer of object(s) between two federated areas.

FIGS. 37A and 37B, together, illustrate an example embodiment of a logicflow of an automated transfer of object(s) associated with a neuralnetwork between two federated areas.

FIG. 38 illustrates an example embodiment of a logic flow of training aneural network.

FIG. 39 illustrates an example embodiment of a logic flow of testing aneural network.

FIGS. 40A, 40B and 40C, together, illustrate another example embodimentof a logic flow of another automated transfer of object(s) associatedwith a neural network between two federated areas.

DETAILED DESCRIPTION

Various embodiments described herein are generally directed totechniques for improving accountability, reproducibility and ease ofaccess in the use of pooled data and pooled routines to perform analysesof pooled data. Network accessible gridded storage may be employed tomaintain one or more federated areas with controlled access for dataobjects and task routines where various rules are imposed to provideaccess security while improving ease of access, and to maintaininteroperability while allowing updates to be made. One or morefederated devices may provide a portal to control access to data objectsand task routines within each of the federated areas, including controlover types of accesses made, to prevent unauthorized additions, changesand/or deletions. The one or more federated devices may maintaininstance logs that document instances of activities performed with dataobjects and task routines to provide a reviewable audit trail of thesteps in conducting analyses, as well as confirmation of the conditionsunder which analyses are performed. However, these features of thefederated area(s) may be provided by the one or more federated devicesin a manner that improves ease of use in both the performance of andsubsequent review of complex analyses with large quantities of data.

Various embodiments described herein are also generally directed totechniques for more granular control of access to, and improvedcollaboration in the development of, pooled data and pooled routines toperform analyses of pooled data. Network accessible gridded storage maybe employed to maintain a set of federated areas with a set of definedrelationships thereamong that correspond to differing levels ofrestriction of access and various automated relationships in thehandling of objects thereamong. A hierarchy among a set of federatedareas may be defined in which there is progressively greater restrictionin access from a base federated area with widely granted access to atleast one private federated area with greatly restricted access, withone or more intermediate federated areas therebetween with correspondingintermediate levels of granted access. Multiple linear hierarchies offederated areas may be combined to form a tree of federated areas,starting with a base federated area at its root, and in which thebranching within the tree through intermediate federated areas and toprivate federated areas may be defined to correspond to a manner inwhich collaboration among individuals and/or other entities is overseenand/or controlled.

Various embodiments described herein are also generally directed totechniques for generating and using directed acyclic graphs (DAGs) inthe development of task routines to implement tasks and/or job flowdefinitions that control the use of multiple task routines to performjob flows. A DAG may be generated from comments incorporated into theprogramming code of one or more task routines that provide a humanreadable description of at least inputs and/or outputs of each of theone or more task routines. Where a DAG is generated from the comments ofmore than one task routine, and where those comments identify specificobjects as inputs and outputs, the DAG may be generated to visuallydepict dependencies among multiple task routines. A DAG so generatedfrom one or more task routines may be employed by developers of taskroutines as a visual guide to the functionality and/or interdependenciesof task routines that are under development and/or that are underconsideration for inclusion in a job flow. Alternatively oradditionally, a DAG so generated may be employed by one or morefederated devices to guide aspects of the execution of interdependenttask routines during the performance of a job flow and/or to provide atleast a portion of the definition of a job flow.

More specifically, the storage of objects (e.g., data objects, taskroutines, job flow definitions, instance logs of performances ofanalyses, and/or DAGs) may be effected using a grid of storage devicesthat are coupled to and/or incorporated into one or more federateddevices. The grid of storage devices may provide distributed storage fordata objects that include large data sets, complex sets of task routinesfor the performance of various analyses, and/or instance logs thatdocument an extensive history of performances of analyses. Suchdistributed storage may be used to provide one or both of faulttolerance and/or faster access through the use of parallelism. Invarious embodiments, the objects stored within a federated area or a setof federated areas may be organized in any of a variety of ways. By wayof example, one or more databases may be defined by the one or morefederated devices to improve efficiency in accessing data objects, taskroutines and/or instance logs of performances of analyses.

The one or more federated devices may define at least some of thestorage space provided by the storage device grid as providing federatedarea(s) to which access is controlled by the one or more federateddevices (or one or more other devices separately providing accesscontrol) in accordance with various rules. By way of example, access toa federated area may be limited to one or more particular authorizedpersons and/or one or more particular authorized entities (e.g.,scholastic entities, governmental entities, business entities, etc.).Alternatively or additionally, access to a federated area may be limitedto one or more particular authorized devices that may be operated underthe control of one or more particular persons and/or entities. Also byway of example, various aspects of the access provided to a federatedarea may be controlled, including and not limited to, the selection ofobjects within a federated area that may be accessed and/or types ofactivities that may be performed with one or more particular objects towhich access may be granted. By way of example, a particular person,entity and/or device may be permitted to access a particular subset ofthe objects stored within a federated area, and/or may be permitted toemploy one or more particular objects in the performance of an analysis,but may not be permitted to alter and/or delete those one or moreparticular objects.

In some embodiments, the use of a federated area may be limited to thestorage and retrieval of objects with controlled access. In suchembodiments, the one or more federated devices may provide a portalaccessible to other devices via a network for use in storing andretrieving objects associated with the performances of analyses by otherdevices. More specifically, one or more source devices may access theportal through the network to provide the one or more federated deviceswith the data objects, task routines, job flow definitions, DAGs and/orinstance logs associated with completed performances of analyses by theone or more source devices for storage within one or more federatedareas for the purpose of memorializing the details of thoseperformances. Subsequently, one or more reviewing devices may access theportal through the network to retrieve such objects from one or morefederated area through the one or more federated devices for the purposeof independently confirming aspects of such the performances.

In other embodiments, the use of at least one federated area may includethe performance of analyses by the one or more federated devices usingthe objects stored therein. In such other embodiments, the one or morefederated devices may receive requests from other devices to performanalyses via the portal, and may provide indications of the results ofsuch performances to those other devices via the portal. Morespecifically, in response to such a request, the one or more federateddevices may execute a combination of task routines specified in a jobflow definition within a federated area to perform an analysis with oneor more data objects, all of which are stored in one or more federatedareas. In so doing, the one or more federated devices may generate aninstance log for storage within one of the one or more federated areathat documents the performances of the analysis, including indicationsof data objects used and/or generated, indications of task routinesexecuted, and an indication of the job flow definition that specifiesthe task routines to be executed to perform the analysis. In some ofsuch other embodiments, the one or more federated devices may be nodesof a grid of federated devices across which tasks of a requestedperformance of an analysis may be distributed. The provision of a gridof the federated devices may make available considerable sharedprocessing and/or storage resources to allow such a grid to itselfperform complex analyses of large quantities of data, while stillallowing a detailed review of aspects of the performance of thatanalysis in situations where questions may arise concerning dataquality, correctness of assumptions made and/or coding errors.

Among the objects that may be stored in a federated area may be numerousdata objects that may include data sets. Each data set may be made up ofany of a variety of types of data concerning any of a wide variety ofsubjects. By way of example, a data set may include scientificobservation data concerning geological and/or meteorological events, orfrom sensors in laboratory experiments in areas such as particlephysics. By way of another example, a data set may include indicationsof activities performed by a random sample of individuals of apopulation of people in a selected country or municipality, or of apopulation of a threatened species under study in the wild. By way ofstill another example, a data set may include data descriptive of aneural network, such as weights and biases of the nodes of a neuralnetwork that may have been derived through a training process in whichthe neural network is trained to perform a function.

Regardless of the types of data each such data set may contain, somedata sets stored in a federated area may include data sets employed asinputs to the performance of one or more analyses, and may include datasets provided to the one or more federated devices for storage within afederated area as input data sets. Other data sets stored in a federatedarea may include data sets that are generated as outputs of theperformance of one or more analyses. It should be noted that some datasets that serve as inputs to the performance of one analysis may begenerated as an output of an earlier performance of another analysis.Still other data sets may be both generated and used as input during asingle performance of an analysis, such as a data set generated by theperformance of one task of an analysis for use by one or more othertasks of that same analysis. Such data sets that are both generated andused during a single performance of an analysis may exist onlytemporarily within a federated area in embodiments in which analyses areperformed within federated area(s) by the one or more federated devices.In other embodiments in which analyses are performed by other devicesoutside of federated area(s), such data sets may not be stored, eventemporarily, within a federated area.

One of the rules imposed by the one or more federated devices may bethat storage within a federated area of executable instructions for theperformance of analysis requires that the analysis itself be defined asa set of tasks that are to be performed in an order defined as a jobflow. More precisely, executable instructions for the performance of ananalysis may be required to be stored as a set of task routines and ajob flow definition that specifies aspects of how the set of taskroutines are executed together to perform the analysis. In someembodiments, the definition of each task routine may include definitionsof the inputs and outputs thereof. In a job flow definition, each taskto be performed may be assigned a flow task identifier, and each taskroutine that is to perform a particular task may be assigned the flowtask identifier of that particular task to make each task routineretrievable by the flow task identifier of the task it performs. Thus,each performance of an analysis may entail a parsing of the job flowdefinition for that analysis to retrieve the flow task identifiers ofthe tasks to be performed, and may then entail the retrieval of a taskroutine required to perform each of those tasks.

As will also be explained in greater detail, such breaking up of ananalysis into a job flow made up of tasks performed by task routinesthat are stored in federated area(s) may be relied upon to enable codereuse in which individual task routines may be shared among the jobflows of multiple analyses. Such reuse of a task routine originallydeveloped for one analysis by another analysis may be very simplyeffected by specifying the flow task identifier of the correspondingtask in the job flow definition for the other analysis. Additionally,reuse may extend to the job flow definitions, themselves, as theavailability of job flow definitions in a federated area may obviate theneed to develop of a new analysis routine where there is a job flowdefinition already available that defines the tasks to be performed inan analysis that may be deemed suitable. Thus, among the objects thatmay be stored in a federated area may be numerous selectable andreusable task routines and job flow definitions.

In some embodiments, job flow definitions may be stored within federatedarea(s) as a file or other type of data structure in which a job flowdefinition is represented as a DAG. Alternatively or additionally, afile or other type of data structure may be used that organizes aspectsof a job flow definition in a manner that enables a DAG to be directlyderived therefrom. Such a file or data structure may directly indicatean order of performance of tasks, or may specify dependencies betweeninputs and outputs of each task to enable an order of performance to bederived. By way of example, an array may be used in which there is anentry for each task routine that includes specifications of its inputs,its outputs and/or dependencies on data objects that may be provided asone or more outputs of one or more other task routines. Thus, a DAG maybe usable to visually portray the relative order in which specifiedtasks are to be performed, while still being interpretable by federateddevices and/or other devices that may be employed to perform theportrayed analysis. Such a form of a job flow definition may be deemeddesirable to enable an efficient presentation of the job flow on adisplay of a reviewing device as a DAG. Thus, review of aspects of aperformance of an analysis may be made easier by such a representationof a job flow.

The tasks that may be performed by any of the numerous tasks routinesmay include any of a variety of data analysis tasks, including and notlimited to searches for one or more particular data items, and/orstatistical analyses such as aggregation, identifying and quantifyingtrends, subsampling, calculating values that characterize at least asubset of the data items within a data object, deriving models, testinghypothesis with such derived models, making predictions, generatingsimulated samples, etc. The tasks that may be performed may also includeany of a variety of data transformation tasks, including and not limitedto, sorting operations, row and/or column-based mathematical operations,filtering of rows and/or columns based on the values of data itemswithin a specified row or column, and/or reordering of at least aspecified subset of data items within a data object into a specifiedascending, descending or other order. Alternatively or additionally, thetasks that may be performed by any of the numerous task routines mayinclude any of a variety of data normalization tasks, including and notlimited to, normalizing time values, date values, monetary values,character spacing, use of delimiter characters and/or codes, and/orother aspects of formatting employed in representing data items withinone or more data objects. The tasks performed may also include, and arenot limited to, normalizing use of big or little Endian encoding ofbinary values, use or lack of use of sign bits, the quantity of bits tobe employed in representations of integers and/or floating point values(e.g., bytes, words, doublewords or quadwords), etc.

The analyses that may be defined by the job flow definitions as jobflows may be any of a wide variety of types of analyses that may includeany of a wide variety of combinations of analysis, normalization and/ortransformation tasks. The result reports generated through performancesof the tasks as directed by each of the job flow definitions may includeany of a wide variety of quantities and/or sizes of data. In someembodiments, one or more of the result reports generated may contain oneor more data sets that may be provided as inputs to the performances ofstill other analyses, and/or may be provided to a reviewing device to bepresented on a display thereof in any of a wide variety of types ofvisualization. In other embodiments, each of one or more of the resultreports generated may primarily include an indication of a predictionand/or conclusion reached through the performance of an analysis thatgenerated the result report as an output.

Also among the objects that may be stored in a federated area may benumerous instance logs that may each provide a record of various detailsof a single performance of a job flow that defines an analysis. Morespecifically, each instance log may provide indications of when aperformance of a job flow occurred, along with identifiers of variousobjects stored within federated area(s) that were used and/or generatedin that performance. Among those identifiers may be an identifier of thejob flow definition that defines the job flow of the analysis performed,identifiers for all of the task routines executed in that performance,identifiers for any data objects employed as an input (e.g., input datasets), and identifiers for any data objects generated as an output(e.g., a result report that may include one or more output data sets).The one or more federated devices may assign such identifiers to dataobjects, task routines and/or job flow definitions as each is storedand/or generated within a federated area to enable such use ofidentifiers in the instance logs. In some embodiments, the identifierfor each such object may be generated by taking a hash of at least aportion of that object to generate a hash value to be used as theidentifier with at least a very high likelihood that the identifiergenerated for each such object is unique. Such use of a hash algorithmmay have the advantage of enabling the generation of identifiers forobjects that are highly likely to be unique with no other input than theobjects, themselves, and this may aid in ensuring that such anidentifier generated for an object by a federated device will beidentical to the identifier that would be generated for the same objectby another device.

It should be noted, however, that in the case of task routines, theidentifiers assigned by the one or more federated devices to each of thetask routines are not the same identifiers as the flow task identifiersthat are employed by the job flow definitions to specify the tasks to beperformed in a job flow. As will be explained in greater detail, foreach task identified in a job flow definition by a flow task identifier,there may be multiple task routines to choose from to perform that task,and each of those task routines may be assigned a different identifierby the one or more federated devices to enable each of those taskroutines to be uniquely identified in an instance log.

Another of the rules imposed by the one or more federated devices may bethat objects referred to within job flow definitions and/or instancelogs that are stored within a federated area may not be permitted to bedeleted from within the federated area. More precisely, to ensure thatit remains possible to perform each of the job flows defined by a jobflow definition stored in the federated area, the one or more federateddevices may impose a restriction against the deletion of the taskroutines that have flow task identifiers that are referred to by any jobflow definition stored within one or more federated areas.Correspondingly, to ensure that previous performances of job flowscontinue to be repeatable for purposes of review, the one or morefederated devices may impose a restriction against the deletion of taskroutines, job flow definitions and data objects identified by theiruniquely assigned identifiers within any instance log stored within oneor more federated areas.

As a result of the imposition of such restrictions on the deletion ofobjects, the replacement of an already stored task routine with a newversion of the task routine in a manner that entails the deletion of thealready stored task routine may not be permitted. However, in someembodiments, the addition of updated versions of task routines tofederated area(s) to coexist with older versions may be permitted toallow improvements to be made. By way of example, it may be deemeddesirable to make improvements to a task routine to correct an error, toadd an additional feature and/or to improve its efficiency. Doing so mayentail the creation of a new version of the task routine that is giventhe same flow task identifier as an earlier version thereof to indicatethat it performs the same task as the earlier version of the taskroutine. When provided to the one or more federated devices for storage,the flow task identifier given to the new version will provide anindication to the one or more federated devices that the newly createdtask routine is a new version of the earlier task routine already storedwithin the federated area. However, the one or more federated devicesmay still generate a unique identifier for the new version of the taskroutine to enable the new version to be uniquely identified in aninstance log so as to make clear in an instance log which version of thetask routine was used in particular the performance of a job flow.

In various embodiments, with job flow definitions, task routines, dataobjects and/or instance logs stored within one or more federated areas,the one or more federated devices may receive requests to employ suchobjects to perform analyses within a federated area and/or to providesuch objects from federated area(s) to other devices to enable thoseother devices to perform analyses. Some requests may be to perform aspecified job flow of an analysis with one or more specified dataobjects, or to provide another device with the objects needed to enablethe performance by the other device of the specified job flow with theone or more specified data objects. Other requests may be to repeat anearlier performance of a job flow that begat a specified result report,or that entailed the use of a specific combination of a job flow and oneor more data sets. Alternatively, other requests may be to provideanother device with the objects needed to enable the other device torepeat an earlier performance of a job flow that begat a specifiedresult report, or that entailed the use of a specific combination of ajob flow and one or more data sets. Through the generation ofidentifiers for each of the various objects associated with eachperformance of a job flow, through the use of those identifiers to referto such objects in instance logs, and through the use of thoseidentifiers by the one or more federated devices in accessing suchobjects, requests for performances of analyses and/or for access totheir associated objects are able to more efficiently identifyparticular performances, their associated objects and/or relatedobjects.

In embodiments in which a request is received to perform a job flow ofan analysis with one or more data objects (the corresponding job flowdefinition and the one or more data objects all identified in therequest by their uniquely assigned identifiers), the one or morefederated devices may analyze the instance logs stored in one or morefederated areas to determine whether there was an earlier performance ofthe same job flow with the same one or more data objects. If there wassuch an earlier performance, then the result report generated as theoutput of that earlier performance may already be stored in a federatedarea. As long as none of the task routines executed in the earlierperformance have been updated since the earlier performance, then arepeat performance of the same job flow with the same one or more dataobjects may not be necessary. Thus, if any instance logs are found forsuch an earlier performance, the one or more federated devices mayanalyze the instance log associated with the most recent earlierperformance (if there has been more than one) to obtain the identifiersuniquely assigned to each of the task routines that were executed inthat earlier performance. The one or more federated devices may thenanalyze each of the uniquely identified task routines to determinewhether each of them continues to be the most current version stored inthe federated area for use in performing its corresponding task. If so,then a repeated performance of the requested job flow with the one ormore data objects identified in the request is not necessary, and theone or more federated devices may retrieve the result report generatedin the earlier performance from a federated area and transmit thatresult report to the device from which the request was received.

However, if no instance logs are found for any earlier performance ofthe specified job flow with the specified one or more data objects wherethe earlier performance entailed the execution of the most currentversion of each of the task routines, then the one or more federateddevices may perform the specified job flow with the specified dataobjects using the most current version of task routine for each taskspecified with a flow task identifier in the job flow definition. Theone or more federated devices may then assign a unique identifier to andstore the new result report generated during such a performance in afederated area, as well as transmit the new result report to the devicefrom which the request was received. The one or more federated devicesmay also generate and store in a federated area a corresponding newinstance log that specifies details of the performance, including theidentifier of the job flow definition, the identifiers of all of themost current versions of task routines that were executed, theidentifiers of the one or more data objects used as inputs and/orgenerated as outputs, and the identifier of the new result report thatwas generated.

In embodiments in which a request is received to provide objects to arequesting device to enable the requesting device (or still anotherdevice) to perform a job flow identified in the request by theidentifier of the corresponding job flow definition with one or moredata objects identified by their identifiers, the one or more federateddevices may retrieve the requested objects from the federated area andtransmit the requested objects to the requesting device. Those objectsmay include the identified job flow definition and the identified one ormore data objects, along with the most current versions of the taskroutines required to perform each of the tasks specified in the job flowdefinition.

In embodiments in which a request is received to repeat a performance ofa job flow of an analysis that begat a result report identified in therequest by its uniquely assigned identifier, the one or more federateddevices may analyze the instance logs stored in one or more federatedareas to retrieve the instance log associated with the performance thatresulted in the generation of the identified result report. The one ormore federated devices may then analyze the retrieved instance log toobtain the identifiers for the job flow definition that defines the jobflow, the identifiers for each of the task routines executed in theperformance, and the identifiers of any data objects used as inputs inthe performance. Upon retrieving the identified job flow definition,each of the identified task routines, and any identified data objects,the one or more federated devices may then execute the retrieved taskroutines, using the retrieved data objects, and in the manner defined bythe retrieved job flow definition to repeat the performance of the jobflow with those objects to generate a new result report. However, sincethe request was to repeat an earlier performance of the job flow withthe very same objects, the new result report should be identical to theearlier result report generated in the original performance such thatthe new result report should be a regeneration of the earlier resultreport. The one or more federated devices may then assign an identifierto and store the new result report in a federated area, as well astransmit the new result report to the device from which the request wasreceived. The one or more federated devices may also generate and store,in a federated area, a corresponding new instance log that specifiesdetails of the new performance of the job flow, including the identifierof the job flow definition, the identifiers of all of the task routinesthat were executed, the identifiers of the one or more data objects usedas inputs and/or generated as outputs, and the identifier of the newresult report.

In embodiments in which a request is received to provide objects to arequesting device to enable the requesting device (or still anotherdevice) to repeat a performance of a job flow that begat a result reportidentified in the request by the identifier of the result report, theone or more federated devices may analyze the instance logs stored inone or more federated areas to retrieve the instance log associated withthe performance that resulted in the generation of the identified resultreport. The one or more federated devices may then analyze the retrievedinstance log to obtain the identifiers for the job flow definition thatdefines the job flow, the identifiers for each of the task routinesexecuted in the performance, and the identifiers of any data objectsused as inputs in the performance. Upon retrieving the identified jobflow definition, each of the identified task routines, and anyidentified data objects, the one or more federated devices may thentransmit those objects to the requesting device.

Through such a regime of rules restricting accesses that may be made toone or more federated areas, and through the use of unique identifiersfor each object stored within one or more federated areas, objects suchas data sets, task routines and job flow definitions are made readilyavailable for reuse under conditions in which their ongoing integrityagainst inadvertent and/or deliberate alteration is assured. Updatedversions of task routines may be independently created and stored withinone or more federated areas in a manner that associates those updatedversions with earlier versions without concern of accidental overwritingof earlier versions. The use of unique identifiers for every object thatare able to be easily and consistently generated from the objects,themselves, serves to ensure consistency in the association ofidentifiers with the objects and prevent instances of accidentaltransposing of identifiers that may result in objects becomingirretrievable from within a federated area.

As a result of such pooling of data sets and task routines, new analysesmay be more speedily created through reuse thereof by generating new jobflows that identify already stored data sets and/or task routines.Additionally, where a task routine is subsequently updated, advantagemay be automatically taken of that updated version in subsequentperformances of each job flow that previously used the earlier versionof that task routine. And yet, the earlier version of that task routineremains available to enable a comparative analysis of the resultsgenerated by the different versions if discrepancies therebetween aresubsequently discovered.

As a result of such pooling of data sets, task routines and job flows,along with instance logs and result reports, repeated performances of aparticular job flow with a particular data set can be avoided. Throughuse of identifiers uniquely associated with each object and recordedwithin each instance log, situations in which a requested performance ofa particular job flow with a particular data set that has beenpreviously performed can be more efficiently identified, and the resultreport generated by that previous performance can be more efficientlyretrieved and made available in lieu of consuming time and processingresources to repeat that previous performance. And yet, if a questionshould arise as to the validity of the results of that previousperformance, the data set(s), task routines and job flow definition onwhich that previous performance was based remain readily accessible foradditional analysis to resolve that question.

Also, where there is no previous performance of a particular job flowwith a particular data set such that there is no previously generatedresult report and/or instance log therefor, the processing resources ofthe grid of federated devices may be utilized to perform the particularjob flow with the particular data set. The ready availability of theparticular data set to the grid of federated devices enables such aperformance without the consumption of time and network bandwidthresources that would be required to transmit the particular data set andother objects to the requesting device to enable a performance by therequesting device. Instead, the transmissions to the requesting devicemay be limited to the result report generated by the performance. Also,advantage may be taken of the grid of federated devices to cause theperformance of one or more of the tasks of the job flow as multipleinstances thereof in a distributed manner (e.g., at least partially inparallel) among multiple federated devices and/or among multiple threadsof execution support by processor(s) within each such federated device.

As a result of the requirement that the data set(s), task routines andthe job flow associated with each instance log be preserved,accountability for the validity of results of past performances of jobflows with particular data sets is maintained. The sources of incorrectresults, whether from invalid data, or from errors made in the creationof a task routine or a job flow, may be traced and identified. By way ofexample, an earlier performance of a particular job flow with aparticular data set using earlier versions of task routines can becompared to a later performance of the same job flow with the same dataset, but using newer versions of the same task routines, as part of ananalysis to identify a possible error in a task routine. As a result,mistakes can be corrected and/or instances of malfeasance can beidentified and addressed.

In various embodiments, the one or more federated devices may maintain aset of multiple related federated areas. The relationships among thefederated areas may be such that a linear hierarchy is defined in whichthere is a base federated area with the least restricted degree ofaccess, a private federated area with the most restricted degree ofaccess, and/or one or more intervening federated areas with intermediatedegrees of access restriction interposed between the base and privatefederated areas. Such a hierarchy of federated areas may be created toaddress any of a variety of situations in support of any of a variety ofactivities, including those in which different objects stored thereamongrequire different degrees of access restriction. By way of example,while a new data set or a new task routine is being developed, it may bedeemed desirable to maintain it within the private federated area orintervening federated area to which access is granted to a relativelysmall number of users (e.g., persons and/or other entities that may eachbe associated with one or more source devices and/or reviewing devices)that are directly involved in the development effort. It may be deemedundesirable to have such a new data set or task routine made accessibleto others beyond the users involved in such development before suchdevelopment is completed, such that various forms of testing and/orquality assurance have been performed. Upon completion of such a newdata set or task routine, it may then be deemed desirable to transferit, or a copy thereof, to the base federated area or other interveningfederated area to which access is granted to a larger number of users.Such a larger number of users may be the intended users of such a newdata set or task routine.

It may be that multiple ones of such linear hierarchical sets offederated areas may be combined to form a tree of federated areas with asingle base federated area with the least restricted degree of access atthe root of the tree, and multiple private federated areas that eachhave more restricted degrees of access as the leaves of the tree. Such atree may additionally include one or more intervening federated areaswith various intermediate degrees of access restriction to define atleast some of the branching of hierarchies of federated areas within thetree. Such a tree of federated areas may be created to address any of avariety of situations in support of any of a variety of larger and/ormore complex activities, including those in which different users thateach require access to different objects at different times are engagedin some form of collaboration. By way of example, multiple users may beinvolved in the development of a new task routine, and each such usermay have a different role to play in such a development effort. Whilethe new task routine is still being architected and/or generated, it maybe deemed desirable to maintain it within a first private federated areaor intervening federated area to which access is granted to a relativelysmall number of users that are directly involved in that effort. Uponcompletion of such an architecting and/or generation process, the newtask routine, or a copy thereof, may be transferred to a second privatefederated area or intervening federated area to which access is grantedto a different relatively small number of users that may be involved inperforming tests and/or other quality analysis procedures on the newtask routine to evaluate its fitness for release for use. Uponcompletion of such testing and/or quality analysis, the new taskroutine, or a copy thereof, may be transferred to a third privatefederated area or intervening federated area to which access is grantedto yet another relatively small number of users that may be involved inpre-release experimental use of the new task routine to further verifyits functionality in actual use case scenarios. Upon completion of suchexperimental use, the new task routine, or a copy thereof, may betransferred to a base federated area or other intervening federated areato which access is granted to a larger number of users that may be theintended users of the new task routine.

In embodiments in which multiple federated areas form a tree offederated areas, each user may be automatically granted their ownprivate federated area as part of being granted access to at least aportion of the tree. Such an automated provision of a private federatedarea may improve the ease of use, for each such user, of at least thebase federated area by providing a private storage area in which aprivate set of job flow definitions, task routines, data sets and/orother objects may be maintained to assist that user in the developmentand/or analysis of other objects that may be stored in at least the basefederated area. By way of example, a developer of task routines maymaintain a private set of job flow definitions, task routines and/ordata sets in their private federated area for use as tools indeveloping, characterizing and/or testing the task routines that theydevelop. The one or more federated devices may be caused, by such adeveloper, to use such job flow definitions, task routines and/or datasets to perform compilations, characterizing and/or testing of such newtask routines within the private federated area as part of thedevelopment process therefor. Some of such private job flow definitions,task routines and/or data sets may include and/or may be importantpieces of intellectual property that such a developer desires to keep tothemselves for their own exclusive use (e.g., treated as trade secretsand/or other forms of confidential information).

A base federated area within a linear hierarchy or hierarchical tree offederated areas may be the one federated area therein with the leastrestrictive degree of access such that a grant of access to the basefederated area constitutes the lowest available level of access that canbe granted to any user. Stated differently, the base federated area mayserve as the most “open” or most “public” space within a linearhierarchy or hierarchical tree of federated spaces. Thus, the basefederated area may serve as the storage space at which may be stored jobflow definitions, versions of task routines, data sets, result reportsand/or instance logs that are meant to be available to all users thathave been granted any degree of access to the set of federated areas ofwhich the base federated area is a part. The one or more federateddevices may be caused, by a user that has been granted access to atleast the base federated area, to perform a job flow within the basefederated area using a job flow definition, task routines and/or datasets stored within the base federated area.

In a linear hierarchical set of federated areas that includes a basefederated area and just a single private federated area, one or moreintervening federated areas may be interposed therebetween to supportthe provision of different levels of access to other users that don'thave access to the private federated area, but are meant to be givenaccess to more than what is stored in the base federated area. Such aprovision of differing levels of access would entail providing differentusers with access to either just the base federated area, or to one ormore intervening federated areas. Of course, this presumes that eachuser having any degree of access to the set of federated areas is notautomatically provided with their own private federated area, as theresulting set of federated areas would then define a tree that includesmultiple private federated areas, and not a linear hierarchy thatincludes just a single private federated area.

In a hierarchical tree of federated areas that includes a base federatedarea at the root and multiple private federated areas at the leaves ofthe tree, one or more intervening federated areas may be interposedbetween one or more of the private federated areas and the basefederated areas in a manner that defines part of one or more branches ofthe tree. Through such branching, different private federated areasand/or different sets of private federated areas may be linked to thebase federated area through different intervening federated areas and/ordifferent sets of intervening federated areas. In this way, usersassociated with some private federated areas within one branch may beprovided with access to one or more intervening federated areas withinthat branch that allow sharing of objects thereamong, while alsoexcluding other users associated with other private federated areas thatmay be within one or more other branches. Stated differently, branchingmay be used to create separate sets of private federated areas whereeach such set of private federated areas is associated with a group ofusers that have agreed to more closely share objects thereamong, whileall users within all of such groups are able to share objects throughthe base federated area, if they so choose.

In embodiments in which there are multiple federated areas that formeither a single linear hierarchy or a hierarchical tree, such a set offederated areas may be made navigable through the use of typical webbrowsing software. More specifically, the one or more federated devicesmay generate the portal to enable access, by a remote device, tofederated areas from across a network using web access protocols inwhich each of multiple federated areas is provided with a unique uniformresource locator (URL). For a set of federated areas organized intoeither a linear hierarchy or a hierarchical tree, the URLs assignedthereto may be structured to reflect the hierarchy that has been definedamong the federated areas therein. By way of example, for a tree offederated areas, the base federated area at the root of the tree may beassigned the shortest and simplest URL, and such a URL may be indicativeof a name given to the tree of federated areas. In contrast, the URL ofeach federated area at a leaf of the tree may include a combination ofat least a portion of the URL given to the base federated area, and atleast a portion of the URL given to any intervening federated area inthe path between the federated area at the leaf and the base federatedarea.

In embodiments of either a linear hierarchy of federated areas or ahierarchical tree of federated areas, one or more relationships thataffect the manner in which objects may be accessed and/or used may beput in place between each private federated area and the base federatedarea, as well as through any intervening federated areas therebetween.Among such relationships may be an inheritance relationship in which,from the perspective of a private federate area, objects stored withinthe base federated area, or within any intervening federated areatherebetween, may be treated as if they are also stored directly withinthe private federated area for purposes of being available for use inperforming a job flow within the private federated area. As will beexplained in greater detail, the provision of such an inheritancerelationship may aid in enabling and/or encouraging the reuse of objectsby multiple users by eliminating the need to distribute multiple copiesof an object among multiple private federated areas in which that objectmay be needed for performances of job flows within each of those privatefederated areas. Instead, a single copy of such an object may be storedwithin the base federated area and will be treated as being just asreadily available for use in performances of job flows within each ofsuch private federated areas.

Also among such relationships may be a priority relationship in which,from the perspective of a private federated area, the use of a versionof an object stored within the private federated area may be givenpriority over the use of another version of the same object storedwithin the base federated area, or within any intervening federated areatherebetween. More specifically, where a job flow is to be performedwithin a private federated area, and there is one version of a taskroutine to perform a task in the job flow stored within the privatefederated area and another version of the task routine to perform thesame task stored within the base federated area, use of the version ofthe task routine stored within the private federated area may be givenpriority over use of the other version stored within the base federatedarea. Further, such priority may be given to using the version storedwithin the private federated area regardless of whether the otherversion stored in the base federated area is a newer version. Stateddifferently, as part of performing the job flow within the privatefederated area, the one or more federated devices may first searchwithin the private federated area for any needed task routines toperform each of the tasks specified in the job flow, and upon finding atask routine to perform a task within the private federated area, nosearch may be performed of any other federated area to find a taskroutine to perform that same task. It may be deemed desirable toimplement such a priority relationship as a mechanism to allow a userassociated with the private federated area to choose to override theautomatic use of a version of a task routine within the base federatedarea (or an intervening federated area therebetween) due to aninheritance relationship by storing the version of the task routine thatthey prefer to use within the private federated area.

Also among such relationships may be a dependency relationship in which,from the perspective of a private federated area, some objects storedwithin the private federated area may have dependencies on objectsstored within the base federated area, or within an interveningfederated area therebetween. More specifically, as earlier discussed,the one or more federated devices may impose a rule that the taskroutines upon which a job flow depends may not be deleted such that theone or more federated devices may deny a request received from a remotedevice to delete a task routine that performs a task identified by aflow task identifier that is referred to by at least one job flowdefinition stored. Thus, where the private federated area stores a jobflow definition that includes a flow task identifier specifying aparticular task to be done, and the base federated area stores a taskroutine that performs that particular task, the job flow of the job flowdefinition may have a dependency on that task routine continuing to beavailable for use in performing the task through an inheritancerelationship between the private federated area and the base federatedarea. In such a situation, the one or more federated devices may deny arequest that may be received from a remote device to delete that taskroutine from the base federated area, at least as long as the job flowdefinition continues to be stored within the private federated area.However, if that job flow definition is deleted from the privatefederated area, and if there is no other job flow definition that refersto the same task flow identifier, then the one or more federated devicesmay permit the deletion of that task routine from the base federatedarea.

In embodiments in which there is a hierarchical tree of federated areasthat includes at least two branches, a relationship may be put in placebetween two private and/or intervening federated areas that are eachwithin a different one of the two branches by which one or more objectsmay be automatically transferred therebetween by the one or morefederated devices in response to one or more conditions being met. Aspreviously discussed, the formation of branches within a tree may beindicative of the separation of groups of users where there may besharing of objects among users within each such group, such as throughthe use of one or more intervening federated areas within a branch ofthe tree, but not sharing of objects between such groups. However, theremay be occasions in which there is a need to enable a relatively limiteddegree of sharing of objects between federated areas within differentbranches. Such an occasion may be an instance of multiple groups ofusers choosing to collaborate on the development of one or moreparticular objects such that those particular one or more objects are tobe shared among the multiple groups where, otherwise, objects would notnormally be shared therebetween. On such an occasion, the one or morefederated devices may be requested to instantiate a transfer areathrough which those particular one or more objects may be automaticallytransferred therebetween upon one or more specified conditions beingmet. In some embodiments, the transfer area may be formed as an overlapbetween two federated areas of two different branches of a hierarchicaltree. In other embodiments, the transfer area may be formed within thebase federated area to which users associated with federated areaswithin different branches may all have access.

In some embodiments, the determination of whether the condition(s) for atransfer have been met and/or the performance of the transfer of one ormore particular objects may be performed using one or more transferroutines to perform transfer-related tasks called for within a transferflow definition. In such embodiments, a transfer routine may be storedwithin each of the two federated areas between which the transfer is tooccur. Within the federated area that the particular one or more objectsare to be transferred from, the one or more federated devices may becaused by the transfer routine stored therein to repeatedly checkwhether the specified condition(s) have been met, and if so, to thentransfer copies of the particular one or more objects into the transferarea. Within the federated area that the particular one or more objectsare to be transferred to, the one or more federated devices may becaused by the transfer routine stored therein to repeatedly checkwhether copies of the particular one or more objects have beentransferred into the transfer area, and if so, to then retrieve thecopies of the particular one or more objects from the transfer area.

A condition that triggers such automated transfers may be any of avariety of conditions that may eventually be met through one or moreperformances of a job flow within the federated area from which one ormore objects are to be so transferred. More specifically, the conditionmay be the successful generation of particular results data that mayinclude a data set that meets one or more requirements that arespecified as the condition. Alternatively, the condition may be thesuccessful generation and/or testing of a new task routine such thatthere is confirmation in a result report or in the generation of one ormore particular data sets that the new task routine has beensuccessfully verified as meeting one or more requirements that arespecified as the condition. As will be explained in greater detail, theone or more performances of a job flow that may produce an output thatcauses the condition to be met may occur within one or more processesthat may be separate from the process in which a transfer routine isexecuted to repeatedly check whether the condition has been met. Also,each of such processes may be performed on a different thread ofexecution of a processor of a federated device, or each of suchprocesses may be performed on a different thread of execution of adifferent processor from among multiple processors of either a singlefederated device or multiple federated devices.

By way of example, multiple users may be involved in the development ofa new neural network, and each such user may have a different role toplay in such a development effort. While the new neural network is beingdeveloped through a training process, it may be deemed desirable tomaintain the data set of weights and biases that is being generatedthrough numerous iterations of training within a first interveningfederated area to which access is granted to a relatively small numberof users that are directly involved in that training effort. Uponcompletion of such training of the neural network, a copy of the dataset of weights and biases may be transferred to a second interveningfederated area to which access is granted to a different relativelysmall number of users that may be involved in testing the neural networkdefined by the data set to evaluate its fitness for release for use. Thetransfer of the copy of the data set from the first interveningfederated area to the second intervening federated area may be triggeredby the training having reached a stage at which a predeterminedcondition is met that defines the completion of training, such as aquantity of iterations of training having been performed. Uponcompletion of such testing of the neural network, a copy of the data setof weights and biases may be transferred from the second interveningfederated area to a third intervening federated area to which access isgranted to yet another relatively small number of users that may beinvolved in pre-release experimental use of the neural network tofurther verify its functionality in actual use case scenarios. Like thetransfer to the second intervening federated area, the transfer of thecopy of the data set from the second intervening federated area to thethird intervening federated area may be triggered by the testing havingreached a stage at which a predetermined condition was met that definesthe completion of testing, such as a threshold of a characteristic ofperformance of the neural network having been found to have been metduring testing. Upon completion of such experimental use, a copy of thedata set of weights and biases may be transferred from the thirdfederated area to a base federated area to which access is granted to alarger number of users that may be the intended users of the new neuralnetwork.

Such a neural network may be part of an effort to transition fromperforming a particular analytical function using non-neuromorphicprocessing (i.e., processing in which a neural network is not used) toperforming the same analytical function using neuromorphic processing(i.e., processing in which a neural network is used). Such a transitionmay represent a tradeoff in accuracy for speed, as the performance ofthe analytical function using neuromorphic processing may not achievethe perfect accuracy (or at least the degree of accuracy) that ispossible via the performance of the analytical function usingnon-neuromorphic processing, but the performance of the analyticalfunction using neuromorphic processing may be faster by one or moreorders of magnitude, depending on whether the neural network isimplemented with software-based simulations of its artificial neuronsexecuted by one or more CPUs or GPUs, or hardware-based implementationsof its artificial neurons provided by one or more neuromorphic devices.

Where the testing of such a neural network progresses successfully suchthat the neural network begins to be put to actual use, there may be agradual transition from the testing to the usage that may beautomatically implemented in a staged manner. Initially,non-neuromorphic and neuromorphic implementations of the analyticalfunction may be performed at least partially in parallel with the sameinput data values being provided to both, and with the correspondingoutput data values of each being compared to test the degree of accuracyof the neural network in performing the analytical function. In suchinitial, at least partially parallel, performances, priority may begiven to providing processing resources to the non-neuromorphicimplementation, since the non-neuromorphic implementation is still theone that is in use. As the neural network demonstrates a degree ofaccuracy that at least meets a predetermined threshold, the testing maychange such that the neuromorphic implementation is used, and priorityis given to providing processing resources to it, while thenon-neuromorphic implementation is used at least partially in parallelsolely to provide output data values for further comparisons tocorresponding ones provided by the neuromorphic implementation.Presuming that the neural network continues to demonstrate a degree ofaccuracy that meets or exceeds the predetermined threshold, further useof the non-neuromorphic implementation of the analytical function maycease, entirely.

In training such a neural network implementing an analytical function inpreparation for such a transition, training data that includes both setsof input values (e.g., data sets) and corresponding sets output values(e.g., result reports) may be generated from sets of input values andcorresponding sets of output values associated with earlier performancesof the non-neuromorphic implementation, or associated with performancesof the non-neuromorphic implementation that occur at least partially inparallel with the training of the neural network. Alternatively oradditionally, the training data may also include randomly generated setsof input values and corresponding sets of output values that werederived by the non-neuromorphic implementation from the randomlygenerated sets of input values.

With general reference to notations and nomenclature used herein,portions of the detailed description that follows may be presented interms of program procedures executed by a processor of a machine or ofmultiple networked machines. These procedural descriptions andrepresentations are used by those skilled in the art to most effectivelyconvey the substance of their work to others skilled in the art. Aprocedure is here, and generally, conceived to be a self-consistentsequence of operations leading to a desired result. These operations arethose requiring physical manipulations of physical quantities. Usually,though not necessarily, these quantities take the form of electrical,magnetic or optical communications capable of being stored, transferred,combined, compared, and otherwise manipulated. It proves convenient attimes, principally for reasons of common usage, to refer to what iscommunicated as bits, values, elements, symbols, characters, terms,numbers, or the like. It should be noted, however, that all of these andsimilar terms are to be associated with the appropriate physicalquantities and are merely convenient labels applied to those quantities.

Further, these manipulations are often referred to in terms, such asadding or comparing, which are commonly associated with mentaloperations performed by a human operator. However, no such capability ofa human operator is necessary, or desirable in most cases, in any of theoperations described herein that form part of one or more embodiments.Rather, these operations are machine operations. Useful machines forperforming operations of various embodiments include machinesselectively activated or configured by a routine stored within that iswritten in accordance with the teachings herein, and/or includeapparatus specially constructed for the required purpose. Variousembodiments also relate to apparatus or systems for performing theseoperations. These apparatus may be specially constructed for therequired purpose or may include a general purpose computer. The requiredstructure for a variety of these machines will appear from thedescription given.

Reference is now made to the drawings, wherein like reference numeralsare used to refer to like elements throughout. In the followingdescription, for purposes of explanation, numerous specific details areset forth in order to provide a thorough understanding thereof. It maybe evident, however, that the novel embodiments can be practiced withoutthese specific details. In other instances, well known structures anddevices are shown in block diagram form in order to facilitate adescription thereof. The intention is to cover all modifications,equivalents, and alternatives within the scope of the claims.

Systems depicted in some of the figures may be provided in variousconfigurations. In some embodiments, the systems may be configured as adistributed system where one or more components of the system aredistributed across one or more networks in a cloud computing systemand/or a fog computing system.

FIG. 1 is a block diagram that provides an illustration of the hardwarecomponents of a data transmission network 100, according to embodimentsof the present technology. Data transmission network 100 is aspecialized computer system that may be used for processing largeamounts of data where a large number of computer processing cycles arerequired.

Data transmission network 100 may also include computing environment114. Computing environment 114 may be a specialized computer or othermachine that processes the data received within the data transmissionnetwork 100. Data transmission network 100 also includes one or morenetwork devices 102. Network devices 102 may include client devices thatattempt to communicate with computing environment 114. For example,network devices 102 may send data to the computing environment 114 to beprocessed, may send signals to the computing environment 114 to controldifferent aspects of the computing environment or the data it isprocessing, among other reasons. Network devices 102 may interact withthe computing environment 114 through a number of ways, such as, forexample, over one or more networks 108. As shown in FIG. 1, computingenvironment 114 may include one or more other systems. For example,computing environment 114 may include a database system 118 and/or acommunications grid 120.

In other embodiments, network devices may provide a large amount ofdata, either all at once or streaming over a period of time (e.g., usingevent stream processing (ESP), described further with respect to FIGS.8-10), to the computing environment 114 via networks 108. For example,network devices 102 may include network computers, sensors, databases,or other devices that may transmit or otherwise provide data tocomputing environment 114. For example, network devices may includelocal area network devices, such as routers, hubs, switches, or othercomputer networking devices. These devices may provide a variety ofstored or generated data, such as network data or data specific to thenetwork devices themselves. Network devices may also include sensorsthat monitor their environment or other devices to collect dataregarding that environment or those devices, and such network devicesmay provide data they collect over time. Network devices may alsoinclude devices within the internet of things, such as devices within ahome automation network. Some of these devices may be referred to asedge devices, and may involve edge computing circuitry. Data may betransmitted by network devices directly to computing environment 114 orto network-attached data stores, such as network-attached data stores110 for storage so that the data may be retrieved later by the computingenvironment 114 or other portions of data transmission network 100.

Data transmission network 100 may also include one or morenetwork-attached data stores 110. Network-attached data stores 110 areused to store data to be processed by the computing environment 114 aswell as any intermediate or final data generated by the computing systemin non-volatile memory. However in certain embodiments, theconfiguration of the computing environment 114 allows its operations tobe performed such that intermediate and final data results can be storedsolely in volatile memory (e.g., RAM), without a requirement thatintermediate or final data results be stored to non-volatile types ofmemory (e.g., disk). This can be useful in certain situations, such aswhen the computing environment 114 receives ad hoc queries from a userand when responses, which are generated by processing large amounts ofdata, need to be generated on-the-fly. In this non-limiting situation,the computing environment 114 may be configured to retain the processedinformation within memory so that responses can be generated for theuser at different levels of detail as well as allow a user tointeractively query against this information.

Network-attached data stores may store a variety of different types ofdata organized in a variety of different ways and from a variety ofdifferent sources. For example, network-attached data storage mayinclude storage other than primary storage located within computingenvironment 114 that is directly accessible by processors locatedtherein. Network-attached data storage may include secondary, tertiaryor auxiliary storage, such as large hard drives, servers, virtualmemory, among other types. Storage devices may include portable ornon-portable storage devices, optical storage devices, and various othermediums capable of storing, containing data. A machine-readable storagemedium or computer-readable storage medium may include a non-transitorymedium in which data can be stored and that does not include carrierwaves and/or transitory electronic signals. Examples of a non-transitorymedium may include, for example, a magnetic disk or tape, opticalstorage media such as compact disk or digital versatile disk, flashmemory, memory or memory devices. A computer-program product may includecode and/or machine-executable instructions that may represent aprocedure, a function, a subprogram, a program, a routine, a subroutine,a module, a software package, a class, or any combination ofinstructions, data structures, or program statements. A code segment maybe coupled to another code segment or a hardware circuit by passingand/or receiving information, data, arguments, parameters, or memorycontents. Information, arguments, parameters, data, etc. may be passed,forwarded, or transmitted via any suitable means including memorysharing, message passing, token passing, network transmission, amongothers. Furthermore, the data stores may hold a variety of differenttypes of data. For example, network-attached data stores 110 may holdunstructured (e.g., raw) data, such as manufacturing data (e.g., adatabase containing records identifying products being manufactured withparameter data for each product, such as colors and models) or productsales databases (e.g., a database containing individual data recordsidentifying details of individual product sales).

The unstructured data may be presented to the computing environment 114in different forms such as a flat file or a conglomerate of datarecords, and may have data values and accompanying time stamps. Thecomputing environment 114 may be used to analyze the unstructured datain a variety of ways to determine the best way to structure (e.g.,hierarchically) that data, such that the structured data is tailored toa type of further analysis that a user wishes to perform on the data.For example, after being processed, the unstructured time stamped datamay be aggregated by time (e.g., into daily time period units) togenerate time series data and/or structured hierarchically according toone or more dimensions (e.g., parameters, attributes, and/or variables).For example, data may be stored in a hierarchical data structure, suchas a ROLAP OR MOLAP database, or may be stored in another tabular form,such as in a flat-hierarchy form.

Data transmission network 100 may also include one or more server farms106. Computing environment 114 may route select communications or datato the one or more sever farms 106 or one or more servers within theserver farms. Server farms 106 can be configured to provide informationin a predetermined manner. For example, server farms 106 may access datato transmit in response to a communication. Server farms 106 may beseparately housed from each other device within data transmissionnetwork 100, such as computing environment 114, and/or may be part of adevice or system.

Server farms 106 may host a variety of different types of dataprocessing as part of data transmission network 100. Server farms 106may receive a variety of different data from network devices, fromcomputing environment 114, from cloud network 116, or from othersources. The data may have been obtained or collected from one or moresensors, as inputs from a control database, or may have been received asinputs from an external system or device. Server farms 106 may assist inprocessing the data by turning raw data into processed data based on oneor more rules implemented by the server farms. For example, sensor datamay be analyzed to determine changes in an environment over time or inreal-time.

Data transmission network 100 may also include one or more cloudnetworks 116. Cloud network 116 may include a cloud infrastructuresystem that provides cloud services. In certain embodiments, servicesprovided by the cloud network 116 may include a host of services thatare made available to users of the cloud infrastructure system ondemand. Cloud network 116 is shown in FIG. 1 as being connected tocomputing environment 114 (and therefore having computing environment114 as its client or user), but cloud network 116 may be connected to orutilized by any of the devices in FIG. 1. Services provided by the cloudnetwork can dynamically scale to meet the needs of its users. The cloudnetwork 116 may include one or more computers, servers, and/or systems.In some embodiments, the computers, servers, and/or systems that make upthe cloud network 116 are different from the user's own on-premisescomputers, servers, and/or systems. For example, the cloud network 116may host an application, and a user may, via a communication networksuch as the Internet, on demand, order and use the application.

While each device, server and system in FIG. 1 is shown as a singledevice, it will be appreciated that multiple devices may instead beused. For example, a set of network devices can be used to transmitvarious communications from a single user, or remote server 140 mayinclude a server stack. As another example, data may be processed aspart of computing environment 114.

Each communication within data transmission network 100 (e.g., betweenclient devices, between servers 106 and computing environment 114 orbetween a server and a device) may occur over one or more networks 108.Networks 108 may include one or more of a variety of different types ofnetworks, including a wireless network, a wired network, or acombination of a wired and wireless network. Examples of suitablenetworks include the Internet, a personal area network, a local areanetwork (LAN), a wide area network (WAN), or a wireless local areanetwork (WLAN). A wireless network may include a wireless interface orcombination of wireless interfaces. As an example, a network in the oneor more networks 108 may include a short-range communication channel,such as a BLUETOOTH® communication channel or a BLUETOOTH® Low Energycommunication channel. A wired network may include a wired interface.The wired and/or wireless networks may be implemented using routers,access points, bridges, gateways, or the like, to connect devices in thenetwork 114, as will be further described with respect to FIG. 2. Theone or more networks 108 can be incorporated entirely within or caninclude an intranet, an extranet, or a combination thereof. In oneembodiment, communications between two or more systems and/or devicescan be achieved by a secure communications protocol, such as securesockets layer (SSL) or transport layer security (TLS). In addition, dataand/or transactional details may be encrypted.

Some aspects may utilize the Internet of Things (IoT), where things(e.g., machines, devices, phones, sensors) can be connected to networksand the data from these things can be collected and processed within thethings and/or external to the things. For example, the IoT can includesensors in many different devices, and high value analytics can beapplied to identify hidden relationships and drive increasedefficiencies. This can apply to both big data analytics and real-time(e.g., ESP) analytics. This will be described further below with respectto FIG. 2.

As noted, computing environment 114 may include a communications grid120 and a transmission network database system 118. Communications grid120 may be a grid-based computing system for processing large amounts ofdata. The transmission network database system 118 may be for managing,storing, and retrieving large amounts of data that are distributed toand stored in the one or more network-attached data stores 110 or otherdata stores that reside at different locations within the transmissionnetwork database system 118. The compute nodes in the grid-basedcomputing system 120 and the transmission network database system 118may share the same processor hardware, such as processors that arelocated within computing environment 114.

FIG. 2 illustrates an example network including an example set ofdevices communicating with each other over an exchange system and via anetwork, according to embodiments of the present technology. As noted,each communication within data transmission network 100 may occur overone or more networks. System 200 includes a network device 204configured to communicate with a variety of types of client devices, forexample client devices 230, over a variety of types of communicationchannels.

As shown in FIG. 2, network device 204 can transmit a communication overa network (e.g., a cellular network via a base station 210). Thecommunication can be routed to another network device, such as networkdevices 205-209, via base station 210. The communication can also berouted to computing environment 214 via base station 210. For example,network device 204 may collect data either from its surroundingenvironment or from other network devices (such as network devices205-209) and transmit that data to computing environment 214.

Although network devices 204-209 are shown in FIG. 2 as a mobile phone,laptop computer, tablet computer, temperature sensor, motion sensor, andaudio sensor respectively, the network devices may be or include sensorsthat are sensitive to detecting aspects of their environment. Forexample, the network devices may include sensors such as water sensors,power sensors, electrical current sensors, chemical sensors, opticalsensors, pressure sensors, geographic or position sensors (e.g., GPS),velocity sensors, acceleration sensors, flow rate sensors, among others.Examples of characteristics that may be sensed include force, torque,load, strain, position, temperature, air pressure, fluid flow, chemicalproperties, resistance, electromagnetic fields, radiation, irradiance,proximity, acoustics, moisture, distance, speed, vibrations,acceleration, electrical potential, electrical current, among others.The sensors may be mounted to various components used as part of avariety of different types of systems (e.g., an oil drilling operation).The network devices may detect and record data related to theenvironment that it monitors, and transmit that data to computingenvironment 214.

As noted, one type of system that may include various sensors thatcollect data to be processed and/or transmitted to a computingenvironment according to certain embodiments includes an oil drillingsystem. For example, the one or more drilling operation sensors mayinclude surface sensors that measure a hook load, a fluid rate, atemperature and a density in and out of the wellbore, a standpipepressure, a surface torque, a rotation speed of a drill pipe, a rate ofpenetration, a mechanical specific energy, etc. and downhole sensorsthat measure a rotation speed of a bit, fluid densities, downholetorque, downhole vibration (axial, tangential, lateral), a weightapplied at a drill bit, an annular pressure, a differential pressure, anazimuth, an inclination, a dog leg severity, a measured depth, avertical depth, a downhole temperature, etc. Besides the raw datacollected directly by the sensors, other data may include parameterseither developed by the sensors or assigned to the system by a client orother controlling device. For example, one or more drilling operationcontrol parameters may control settings such as a mud motor speed toflow ratio, a bit diameter, a predicted formation top, seismic data,weather data, etc. Other data may be generated using physical modelssuch as an earth model, a weather model, a seismic model, a bottom holeassembly model, a well plan model, an annular friction model, etc. Inaddition to sensor and control settings, predicted outputs, of forexample, the rate of penetration, mechanical specific energy, hook load,flow in fluid rate, flow out fluid rate, pump pressure, surface torque,rotation speed of the drill pipe, annular pressure, annular frictionpressure, annular temperature, equivalent circulating density, etc. mayalso be stored in the data warehouse.

In another example, another type of system that may include varioussensors that collect data to be processed and/or transmitted to acomputing environment according to certain embodiments includes a homeautomation or similar automated network in a different environment, suchas an office space, school, public space, sports venue, or a variety ofother locations. Network devices in such an automated network mayinclude network devices that allow a user to access, control, and/orconfigure various home appliances located within the user's home (e.g.,a television, radio, light, fan, humidifier, sensor, microwave, iron,and/or the like), or outside of the user's home (e.g., exterior motionsensors, exterior lighting, garage door openers, sprinkler systems, orthe like). For example, network device 102 may include a home automationswitch that may be coupled with a home appliance. In another embodiment,a network device can allow a user to access, control, and/or configuredevices, such as office-related devices (e.g., copy machine, printer, orfax machine), audio and/or video related devices (e.g., a receiver, aspeaker, a projector, a DVD player, or a television), media-playbackdevices (e.g., a compact disc player, a CD player, or the like),computing devices (e.g., a home computer, a laptop computer, a tablet, apersonal digital assistant (PDA), a computing device, or a wearabledevice), lighting devices (e.g., a lamp or recessed lighting), devicesassociated with a security system, devices associated with an alarmsystem, devices that can be operated in an automobile (e.g., radiodevices, navigation devices), and/or the like. Data may be collectedfrom such various sensors in raw form, or data may be processed by thesensors to create parameters or other data either developed by thesensors based on the raw data or assigned to the system by a client orother controlling device.

In another example, another type of system that may include varioussensors that collect data to be processed and/or transmitted to acomputing environment according to certain embodiments includes a poweror energy grid. A variety of different network devices may be includedin an energy grid, such as various devices within one or more powerplants, energy farms (e.g., wind farm, solar farm, among others) energystorage facilities, factories, homes and businesses of consumers, amongothers. One or more of such devices may include one or more sensors thatdetect energy gain or loss, electrical input or output or loss, and avariety of other efficiencies. These sensors may collect data to informusers of how the energy grid, and individual devices within the grid,may be functioning and how they may be made more efficient.

Network device sensors may also perform processing on data it collectsbefore transmitting the data to the computing environment 114, or beforedeciding whether to transmit data to the computing environment 114. Forexample, network devices may determine whether data collected meetscertain rules, for example by comparing data or values calculated fromthe data and comparing that data to one or more thresholds. The networkdevice may use this data and/or comparisons to determine if the datashould be transmitted to the computing environment 214 for further useor processing.

Computing environment 214 may include machines 220 and 240. Althoughcomputing environment 214 is shown in FIG. 2 as having two machines, 220and 240, computing environment 214 may have only one machine or may havemore than two machines. The machines that make up computing environment214 may include specialized computers, servers, or other machines thatare configured to individually and/or collectively process large amountsof data. The computing environment 214 may also include storage devicesthat include one or more databases of structured data, such as dataorganized in one or more hierarchies, or unstructured data. Thedatabases may communicate with the processing devices within computingenvironment 214 to distribute data to them. Since network devices maytransmit data to computing environment 214, that data may be received bythe computing environment 214 and subsequently stored within thosestorage devices. Data used by computing environment 214 may also bestored in data stores 235, which may also be a part of or connected tocomputing environment 214.

Computing environment 214 can communicate with various devices via oneor more routers 225 or other inter-network or intra-network connectioncomponents. For example, computing environment 214 may communicate withdevices 230 via one or more routers 225. Computing environment 214 maycollect, analyze and/or store data from or pertaining to communications,client device operations, client rules, and/or user-associated actionsstored at one or more data stores 235. Such data may influencecommunication routing to the devices within computing environment 214,how data is stored or processed within computing environment 214, amongother actions.

Notably, various other devices can further be used to influencecommunication routing and/or processing between devices within computingenvironment 214 and with devices outside of computing environment 214.For example, as shown in FIG. 2, computing environment 214 may include aweb server 240. Thus, computing environment 214 can retrieve data ofinterest, such as client information (e.g., product information, clientrules, etc.), technical product details, news, current or predictedweather, and so on.

In addition to computing environment 214 collecting data (e.g., asreceived from network devices, such as sensors, and client devices orother sources) to be processed as part of a big data analytics project,it may also receive data in real time as part of a streaming analyticsenvironment. As noted, data may be collected using a variety of sourcesas communicated via different kinds of networks or locally. Such datamay be received on a real-time streaming basis. For example, networkdevices may receive data periodically from network device sensors as thesensors continuously sense, monitor and track changes in theirenvironments. Devices within computing environment 214 may also performpre-analysis on data it receives to determine if the data receivedshould be processed as part of an ongoing project. The data received andcollected by computing environment 214, no matter what the source ormethod or timing of receipt, may be processed over a period of time fora client to determine results data based on the client's needs andrules.

FIG. 3 illustrates a representation of a conceptual model of acommunications protocol system, according to embodiments of the presenttechnology. More specifically, FIG. 3 identifies operation of acomputing environment in an Open Systems Interaction model thatcorresponds to various connection components. The model 300 shows, forexample, how a computing environment, such as computing environment 314(or computing environment 214 in FIG. 2) may communicate with otherdevices in its network, and control how communications between thecomputing environment and other devices are executed and under whatconditions.

The model can include layers 301-307. The layers are arranged in astack. Each layer in the stack serves the layer one level higher than it(except for the application layer, which is the highest layer), and isserved by the layer one level below it (except for the physical layer,which is the lowest layer). The physical layer is the lowest layerbecause it receives and transmits raw bites of data, and is the farthestlayer from the user in a communications system. On the other hand, theapplication layer is the highest layer because it interacts directlywith a software application.

As noted, the model includes a physical layer 301. Physical layer 301represents physical communication, and can define parameters of thatphysical communication. For example, such physical communication maycome in the form of electrical, optical, or electromagnetic signals.Physical layer 301 also defines protocols that may controlcommunications within a data transmission network.

Link layer 302 defines links and mechanisms used to transmit (i.e.,move) data across a network. The link layer 302 manages node-to-nodecommunications, such as within a grid computing environment. Link layer302 can detect and correct errors (e.g., transmission errors in thephysical layer 301). Link layer 302 can also include a media accesscontrol (MAC) layer and logical link control (LLC) layer.

Network layer 303 defines the protocol for routing within a network. Inother words, the network layer coordinates transferring data acrossnodes in a same network (e.g., such as a grid computing environment).Network layer 303 can also define the processes used to structure localaddressing within the network.

Transport layer 304 can manage the transmission of data and the qualityof the transmission and/or receipt of that data. Transport layer 304 canprovide a protocol for transferring data, such as, for example, aTransmission Control Protocol (TCP). Transport layer 304 can assembleand disassemble data frames for transmission. The transport layer canalso detect transmission errors occurring in the layers below it.

Session layer 305 can establish, maintain, and manage communicationconnections between devices on a network. In other words, the sessionlayer controls the dialogues or nature of communications between networkdevices on the network. The session layer may also establishcheckpointing, adjournment, termination, and restart procedures.

Presentation layer 306 can provide translation for communicationsbetween the application and network layers. In other words, this layermay encrypt, decrypt and/or format data based on data types and/orencodings known to be accepted by an application or network layer.

Application layer 307 interacts directly with software applications andend users, and manages communications between them. Application layer307 can identify destinations, local resource states or availabilityand/or communication content or formatting using the applications.

Intra-network connection components 321 and 322 are shown to operate inlower levels, such as physical layer 301 and link layer 302,respectively. For example, a hub can operate in the physical layer, aswitch can operate in the link layer, and a router can operate in thenetwork layer. Inter-network connection components 323 and 328 are shownto operate on higher levels, such as layers 303-307. For example,routers can operate in the network layer and network devices can operatein the transport, session, presentation, and application layers.

As noted, a computing environment 314 can interact with and/or operateon, in various embodiments, one, more, all or any of the various layers.For example, computing environment 314 can interact with a hub (e.g.,via the link layer) so as to adjust which devices the hub communicateswith. The physical layer may be served by the link layer, so it mayimplement such data from the link layer. For example, the computingenvironment 314 may control which devices it will receive data from. Forexample, if the computing environment 314 knows that a certain networkdevice has turned off, broken, or otherwise become unavailable orunreliable, the computing environment 314 may instruct the hub toprevent any data from being transmitted to the computing environment 314from that network device. Such a process may be beneficial to avoidreceiving data that is inaccurate or that has been influenced by anuncontrolled environment. As another example, computing environment 314can communicate with a bridge, switch, router or gateway and influencewhich device within the system (e.g., system 200) the component selectsas a destination. In some embodiments, computing environment 314 caninteract with various layers by exchanging communications with equipmentoperating on a particular layer by routing or modifying existingcommunications. In another embodiment, such as in a grid computingenvironment, a node may determine how data within the environment shouldbe routed (e.g., which node should receive certain data) based oncertain parameters or information provided by other layers within themodel.

As noted, the computing environment 314 may be a part of acommunications grid environment, the communications of which may beimplemented as shown in the protocol of FIG. 3. For example, referringback to FIG. 2, one or more of machines 220 and 240 may be part of acommunications grid computing environment. A gridded computingenvironment may be employed in a distributed system with non-interactiveworkloads where data resides in memory on the machines, or computenodes. In such an environment, analytic code, instead of a databasemanagement system, controls the processing performed by the nodes. Datais co-located by pre-distributing it to the grid nodes, and the analyticcode on each node loads the local data into memory. Each node may beassigned a particular task such as a portion of a processing project, orto organize or control other nodes within the grid.

FIG. 4 illustrates a communications grid computing system 400 includinga variety of control and worker nodes, according to embodiments of thepresent technology. Communications grid computing system 400 includesthree control nodes and one or more worker nodes. Communications gridcomputing system 400 includes control nodes 402, 404, and 406. Thecontrol nodes are communicatively connected via communication paths 451,453, and 455. Therefore, the control nodes may transmit information(e.g., related to the communications grid or notifications), to andreceive information from each other. Although communications gridcomputing system 400 is shown in FIG. 4 as including three controlnodes, the communications grid may include more or less than threecontrol nodes.

Communications grid computing system (or just “communications grid”) 400also includes one or more worker nodes. Shown in FIG. 4 are six workernodes 410-420. Although FIG. 4 shows six worker nodes, a communicationsgrid according to embodiments of the present technology may include moreor less than six worker nodes. The number of worker nodes included in acommunications grid may be dependent upon how large the project or dataset is being processed by the communications grid, the capacity of eachworker node, the time designated for the communications grid to completethe project, among others. Each worker node within the communicationsgrid 400 may be connected (wired or wirelessly, and directly orindirectly) to control nodes 402-406. Therefore, each worker node mayreceive information from the control nodes (e.g., an instruction toperform work on a project) and may transmit information to the controlnodes (e.g., a result from work performed on a project). Furthermore,worker nodes may communicate with each other (either directly orindirectly). For example, worker nodes may transmit data between eachother related to a job being performed or an individual task within ajob being performed by that worker node. However, in certainembodiments, worker nodes may not, for example, be connected(communicatively or otherwise) to certain other worker nodes. In anembodiment, worker nodes may only be able to communicate with thecontrol node that controls it, and may not be able to communicate withother worker nodes in the communications grid, whether they are otherworker nodes controlled by the control node that controls the workernode, or worker nodes that are controlled by other control nodes in thecommunications grid.

A control node may connect with an external device with which thecontrol node may communicate (e.g., a grid user, such as a server orcomputer, may connect to a controller of the grid). For example, aserver or computer may connect to control nodes and may transmit aproject or job to the node. The project may include a data set. The dataset may be of any size. Once the control node receives such a projectincluding a large data set, the control node may distribute the data setor projects related to the data set to be performed by worker nodes.Alternatively, for a project including a large data set, the data setmay be received or stored by a machine other than a control node (e.g.,a HADOOP® standard-compliant data node employing the HADOOP® DistributedFile System, or HDFS).

Control nodes may maintain knowledge of the status of the nodes in thegrid (i.e., grid status information), accept work requests from clients,subdivide the work across worker nodes, coordinate the worker nodes,among other responsibilities. Worker nodes may accept work requests froma control node and provide the control node with results of the workperformed by the worker node. A grid may be started from a single node(e.g., a machine, computer, server, etc.). This first node may beassigned or may start as the primary control node that will control anyadditional nodes that enter the grid.

When a project is submitted for execution (e.g., by a client or acontroller of the grid) it may be assigned to a set of nodes. After thenodes are assigned to a project, a data structure (i.e., a communicator)may be created. The communicator may be used by the project forinformation to be shared between the project code running on each node.A communication handle may be created on each node. A handle, forexample, is a reference to the communicator that is valid within asingle process on a single node, and the handle may be used whenrequesting communications between nodes.

A control node, such as control node 402, may be designated as theprimary control node. A server, computer or other external device mayconnect to the primary control node. Once the control node receives aproject, the primary control node may distribute portions of the projectto its worker nodes for execution. For example, when a project isinitiated on communications grid 400, primary control node 402 controlsthe work to be performed for the project in order to complete theproject as requested or instructed. The primary control node maydistribute work to the worker nodes based on various factors, such aswhich subsets or portions of projects may be completed most efficientlyand in the correct amount of time. For example, a worker node mayperform analysis on a portion of data that is already local (e.g.,stored on) the worker node. The primary control node also coordinatesand processes the results of the work performed by each worker nodeafter each worker node executes and completes its job. For example, theprimary control node may receive a result from one or more worker nodes,and the control node may organize (e.g., collect and assemble) theresults received and compile them to produce a complete result for theproject received from the end user.

Any remaining control nodes, such as control nodes 404 and 406, may beassigned as backup control nodes for the project. In an embodiment,backup control nodes may not control any portion of the project.Instead, backup control nodes may serve as a backup for the primarycontrol node and take over as primary control node if the primarycontrol node were to fail. If a communications grid were to include onlya single control node, and the control node were to fail (e.g., thecontrol node is shut off or breaks) then the communications grid as awhole may fail and any project or job being run on the communicationsgrid may fail and may not complete. While the project may be run again,such a failure may cause a delay (severe delay in some cases, such asovernight delay) in completion of the project. Therefore, a grid withmultiple control nodes, including a backup control node, may bebeneficial.

To add another node or machine to the grid, the primary control node mayopen a pair of listening sockets, for example. A socket may be used toaccept work requests from clients, and the second socket may be used toaccept connections from other grid nodes. The primary control node maybe provided with a list of other nodes (e.g., other machines, computers,servers) that will participate in the grid, and the role that each nodewill fill in the grid. Upon startup of the primary control node (e.g.,the first node on the grid), the primary control node may use a networkprotocol to start the server process on every other node in the grid.Command line parameters, for example, may inform each node of one ormore pieces of information, such as: the role that the node will have inthe grid, the host name of the primary control node, the port number onwhich the primary control node is accepting connections from peer nodes,among others. The information may also be provided in a configurationfile, transmitted over a secure shell tunnel, recovered from aconfiguration server, among others. While the other machines in the gridmay not initially know about the configuration of the grid, thatinformation may also be sent to each other node by the primary controlnode. Updates of the grid information may also be subsequently sent tothose nodes.

For any control node other than the primary control node added to thegrid, the control node may open three sockets. The first socket mayaccept work requests from clients, the second socket may acceptconnections from other grid members, and the third socket may connect(e.g., permanently) to the primary control node. When a control node(e.g., primary control node) receives a connection from another controlnode, it first checks to see if the peer node is in the list ofconfigured nodes in the grid. If it is not on the list, the control nodemay clear the connection. If it is on the list, it may then attempt toauthenticate the connection. If authentication is successful, theauthenticating node may transmit information to its peer, such as theport number on which a node is listening for connections, the host nameof the node, information about how to authenticate the node, among otherinformation. When a node, such as the new control node, receivesinformation about another active node, it will check to see if italready has a connection to that other node. If it does not have aconnection to that node, it may then establish a connection to thatcontrol node.

Any worker node added to the grid may establish a connection to theprimary control node and any other control nodes on the grid. Afterestablishing the connection, it may authenticate itself to the grid(e.g., any control nodes, including both primary and backup, or a serveror user controlling the grid). After successful authentication, theworker node may accept configuration information from the control node.

When a node joins a communications grid (e.g., when the node is poweredon or connected to an existing node on the grid or both), the node isassigned (e.g., by an operating system of the grid) a universally uniqueidentifier (UUID). This unique identifier may help other nodes andexternal entities (devices, users, etc.) to identify the node anddistinguish it from other nodes. When a node is connected to the grid,the node may share its unique identifier with the other nodes in thegrid. Since each node may share its unique identifier, each node mayknow the unique identifier of every other node on the grid. Uniqueidentifiers may also designate a hierarchy of each of the nodes (e.g.,backup control nodes) within the grid. For example, the uniqueidentifiers of each of the backup control nodes may be stored in a listof backup control nodes to indicate an order in which the backup controlnodes will take over for a failed primary control node to become a newprimary control node. However, a hierarchy of nodes may also bedetermined using methods other than using the unique identifiers of thenodes. For example, the hierarchy may be predetermined, or may beassigned based on other predetermined factors.

The grid may add new machines at any time (e.g., initiated from anycontrol node). Upon adding a new node to the grid, the control node mayfirst add the new node to its table of grid nodes. The control node mayalso then notify every other control node about the new node. The nodesreceiving the notification may acknowledge that they have updated theirconfiguration information.

Primary control node 402 may, for example, transmit one or morecommunications to backup control nodes 404 and 406 (and, for example, toother control or worker nodes within the communications grid). Suchcommunications may sent periodically, at fixed time intervals, betweenknown fixed stages of the project's execution, among other protocols.The communications transmitted by primary control node 402 may be ofvaried types and may include a variety of types of information. Forexample, primary control node 402 may transmit snapshots (e.g., statusinformation) of the communications grid so that backup control node 404always has a recent snapshot of the communications grid. The snapshot orgrid status may include, for example, the structure of the grid(including, for example, the worker nodes in the grid, uniqueidentifiers of the nodes, or their relationships with the primarycontrol node) and the status of a project (including, for example, thestatus of each worker node's portion of the project). The snapshot mayalso include analysis or results received from worker nodes in thecommunications grid. The backup control nodes may receive and store thebackup data received from the primary control node. The backup controlnodes may transmit a request for such a snapshot (or other information)from the primary control node, or the primary control node may send suchinformation periodically to the backup control nodes.

As noted, the backup data may allow the backup control node to take overas primary control node if the primary control node fails withoutrequiring the grid to start the project over from scratch. If theprimary control node fails, the backup control node that will take overas primary control node may retrieve the most recent version of thesnapshot received from the primary control node and use the snapshot tocontinue the project from the stage of the project indicated by thebackup data. This may prevent failure of the project as a whole.

A backup control node may use various methods to determine that theprimary control node has failed. In one example of such a method, theprimary control node may transmit (e.g., periodically) a communicationto the backup control node that indicates that the primary control nodeis working and has not failed, such as a heartbeat communication. Thebackup control node may determine that the primary control node hasfailed if the backup control node has not received a heartbeatcommunication for a certain predetermined period of time. Alternatively,a backup control node may also receive a communication from the primarycontrol node itself (before it failed) or from a worker node that theprimary control node has failed, for example because the primary controlnode has failed to communicate with the worker node.

Different methods may be performed to determine which backup controlnode of a set of backup control nodes (e.g., backup control nodes 404and 406) will take over for failed primary control node 402 and becomethe new primary control node. For example, the new primary control nodemay be chosen based on a ranking or “hierarchy” of backup control nodesbased on their unique identifiers. In an alternative embodiment, abackup control node may be assigned to be the new primary control nodeby another device in the communications grid or from an external device(e.g., a system infrastructure or an end user, such as a server orcomputer, controlling the communications grid). In another alternativeembodiment, the backup control node that takes over as the new primarycontrol node may be designated based on bandwidth or other statisticsabout the communications grid.

A worker node within the communications grid may also fail. If a workernode fails, work being performed by the failed worker node may beredistributed amongst the operational worker nodes. In an alternativeembodiment, the primary control node may transmit a communication toeach of the operable worker nodes still on the communications grid thateach of the worker nodes should purposefully fail also. After each ofthe worker nodes fail, they may each retrieve their most recent savedcheckpoint of their status and re-start the project from that checkpointto minimize lost progress on the project being executed.

FIG. 5 illustrates a flow chart showing an example process 500 foradjusting a communications grid or a work project in a communicationsgrid after a failure of a node, according to embodiments of the presenttechnology. The process may include, for example, receiving grid statusinformation including a project status of a portion of a project beingexecuted by a node in the communications grid, as described in operation502. For example, a control node (e.g., a backup control node connectedto a primary control node and a worker node on a communications grid)may receive grid status information, where the grid status informationincludes a project status of the primary control node or a projectstatus of the worker node. The project status of the primary controlnode and the project status of the worker node may include a status ofone or more portions of a project being executed by the primary andworker nodes in the communications grid. The process may also includestoring the grid status information, as described in operation 504. Forexample, a control node (e.g., a backup control node) may store thereceived grid status information locally within the control node.Alternatively, the grid status information may be sent to another devicefor storage where the control node may have access to the information.

The process may also include receiving a failure communicationcorresponding to a node in the communications grid in operation 506. Forexample, a node may receive a failure communication including anindication that the primary control node has failed, prompting a backupcontrol node to take over for the primary control node. In analternative embodiment, a node may receive a failure that a worker nodehas failed, prompting a control node to reassign the work beingperformed by the worker node. The process may also include reassigning anode or a portion of the project being executed by the failed node, asdescribed in operation 508. For example, a control node may designatethe backup control node as a new primary control node based on thefailure communication upon receiving the failure communication. If thefailed node is a worker node, a control node may identify a projectstatus of the failed worker node using the snapshot of thecommunications grid, where the project status of the failed worker nodeincludes a status of a portion of the project being executed by thefailed worker node at the failure time.

The process may also include receiving updated grid status informationbased on the reassignment, as described in operation 510, andtransmitting a set of instructions based on the updated grid statusinformation to one or more nodes in the communications grid, asdescribed in operation 512. The updated grid status information mayinclude an updated project status of the primary control node or anupdated project status of the worker node. The updated information maybe transmitted to the other nodes in the grid to update their stalestored information.

FIG. 6 illustrates a portion of a communications grid computing system600 including a control node and a worker node, according to embodimentsof the present technology. Communications grid 600 computing systemincludes one control node (control node 602) and one worker node (workernode 610) for purposes of illustration, but may include more workerand/or control nodes. The control node 602 is communicatively connectedto worker node 610 via communication path 650. Therefore, control node602 may transmit information (e.g., related to the communications gridor notifications), to and receive information from worker node 610 viapath 650.

Similar to in FIG. 4, communications grid computing system (or just“communications grid”) 600 includes data processing nodes (control node602 and worker node 610). Nodes 602 and 610 include multi-core dataprocessors. Each node 602 and 610 includes a grid-enabled softwarecomponent (GESC) 620 that executes on the data processor associated withthat node and interfaces with buffer memory 622 also associated withthat node. Each node 602 and 610 includes a database management software(DBMS) 628 that executes on a database server (not shown) at controlnode 602 and on a database server (not shown) at worker node 610.

Each node also includes a data store 624. Data stores 624, similar tonetwork-attached data stores 110 in FIG. 1 and data stores 235 in FIG.2, are used to store data to be processed by the nodes in the computingenvironment. Data stores 624 may also store any intermediate or finaldata generated by the computing system after being processed, forexample in non-volatile memory. However in certain embodiments, theconfiguration of the grid computing environment allows its operations tobe performed such that intermediate and final data results can be storedsolely in volatile memory (e.g., RAM), without a requirement thatintermediate or final data results be stored to non-volatile types ofmemory. Storing such data in volatile memory may be useful in certainsituations, such as when the grid receives queries (e.g., ad hoc) from aclient and when responses, which are generated by processing largeamounts of data, need to be generated quickly or on-the-fly. In such asituation, the grid may be configured to retain the data within memoryso that responses can be generated at different levels of detail and sothat a client may interactively query against this information.

Each node also includes a user-defined function (UDF) 626. The UDFprovides a mechanism for the DBMS 628 to transfer data to or receivedata from the database stored in the data stores 624 that are managed bythe DBMS. For example, UDF 626 can be invoked by the DBMS to providedata to the GESC for processing. The UDF 626 may establish a socketconnection (not shown) with the GESC to transfer the data.Alternatively, the UDF 626 can transfer data to the GESC by writing datato shared memory accessible by both the UDF and the GESC.

The GESC 620 at the nodes 602 and 620 may be connected via a network,such as network 108 shown in FIG. 1. Therefore, nodes 602 and 620 cancommunicate with each other via the network using a predeterminedcommunication protocol such as, for example, the Message PassingInterface (MPI). Each GESC 620 can engage in point-to-pointcommunication with the GESC at another node or in collectivecommunication with multiple GESCs via the network. The GESC 620 at eachnode may contain identical (or nearly identical) software instructions.Each node may be capable of operating as either a control node or aworker node. The GESC at the control node 602 can communicate, over acommunication path 652, with a client device 630. More specifically,control node 602 may communicate with client application 632 hosted bythe client device 630 to receive queries and to respond to those queriesafter processing large amounts of data.

DBMS 628 may control the creation, maintenance, and use of database ordata structure (not shown) within a nodes 602 or 610. The database mayorganize data stored in data stores 624. The DBMS 628 at control node602 may accept requests for data and transfer the appropriate data forthe request. With such a process, collections of data may be distributedacross multiple physical locations. In this example, each node 602 and610 stores a portion of the total data managed by the management systemin its associated data store 624.

Furthermore, the DBMS may be responsible for protecting against dataloss using replication techniques. Replication includes providing abackup copy of data stored on one node on one or more other nodes.Therefore, if one node fails, the data from the failed node can berecovered from a replicated copy residing at another node. However, asdescribed herein with respect to FIG. 4, data or status information foreach node in the communications grid may also be shared with each nodeon the grid.

FIG. 7 illustrates a flow chart showing an example method 700 forexecuting a project within a grid computing system, according toembodiments of the present technology. As described with respect to FIG.6, the GESC at the control node may transmit data with a client device(e.g., client device 630) to receive queries for executing a project andto respond to those queries after large amounts of data have beenprocessed. The query may be transmitted to the control node, where thequery may include a request for executing a project, as described inoperation 702. The query can contain instructions on the type of dataanalysis to be performed in the project and whether the project shouldbe executed using the grid-based computing environment, as shown inoperation 704.

To initiate the project, the control node may determine if the queryrequests use of the grid-based computing environment to execute theproject. If the determination is no, then the control node initiatesexecution of the project in a solo environment (e.g., at the controlnode), as described in operation 710. If the determination is yes, thecontrol node may initiate execution of the project in the grid-basedcomputing environment, as described in operation 706. In such asituation, the request may include a requested configuration of thegrid. For example, the request may include a number of control nodes anda number of worker nodes to be used in the grid when executing theproject. After the project has been completed, the control node maytransmit results of the analysis yielded by the grid, as described inoperation 708. Whether the project is executed in a solo or grid-basedenvironment, the control node provides the results of the project, asdescribed in operation 712.

As noted with respect to FIG. 2, the computing environments describedherein may collect data (e.g., as received from network devices, such assensors, such as network devices 204-209 in FIG. 2, and client devicesor other sources) to be processed as part of a data analytics project,and data may be received in real time as part of a streaming analyticsenvironment (e.g., ESP). Data may be collected using a variety ofsources as communicated via different kinds of networks or locally, suchas on a real-time streaming basis. For example, network devices mayreceive data periodically from network device sensors as the sensorscontinuously sense, monitor and track changes in their environments.More specifically, an increasing number of distributed applicationsdevelop or produce continuously flowing data from distributed sources byapplying queries to the data before distributing the data togeographically distributed recipients. An event stream processing engine(ESPE) may continuously apply the queries to the data as it is receivedand determines which entities should receive the data. Client or otherdevices may also subscribe to the ESPE or other devices processing ESPdata so that they can receive data after processing, based on forexample the entities determined by the processing engine. For example,client devices 230 in FIG. 2 may subscribe to the ESPE in computingenvironment 214. In another example, event subscription devices 1024a-c, described further with respect to FIG. 10, may also subscribe tothe ESPE. The ESPE may determine or define how input data or eventstreams from network devices or other publishers (e.g., network devices204-209 in FIG. 2) are transformed into meaningful output data to beconsumed by subscribers, such as for example client devices 230 in FIG.2.

FIG. 8 illustrates a block diagram including components of an EventStream Processing Engine (ESPE), according to embodiments of the presenttechnology. ESPE 800 may include one or more projects 802. A project maybe described as a second-level container in an engine model managed byESPE 800 where a thread pool size for the project may be defined by auser. Each project of the one or more projects 802 may include one ormore continuous queries 804 that contain data flows, which are datatransformations of incoming event streams. The one or more continuousqueries 804 may include one or more source windows 806 and one or morederived windows 808.

The ESPE may receive streaming data over a period of time related tocertain events, such as events or other data sensed by one or morenetwork devices. The ESPE may perform operations associated withprocessing data created by the one or more devices. For example, theESPE may receive data from the one or more network devices 204-209 shownin FIG. 2. As noted, the network devices may include sensors that sensedifferent aspects of their environments, and may collect data over timebased on those sensed observations. For example, the ESPE may beimplemented within one or more of machines 220 and 240 shown in FIG. 2.The ESPE may be implemented within such a machine by an ESP application.An ESP application may embed an ESPE with its own dedicated thread poolor pools into its application space where the main application threadcan do application-specific work and the ESPE processes event streams atleast by creating an instance of a model into processing objects.

The engine container is the top-level container in a model that managesthe resources of the one or more projects 802. In an illustrativeembodiment, for example, there may be only one ESPE 800 for eachinstance of the ESP application, and ESPE 800 may have a unique enginename. Additionally, the one or more projects 802 may each have uniqueproject names, and each query may have a unique continuous query nameand begin with a uniquely named source window of the one or more sourcewindows 806. ESPE 800 may or may not be persistent.

Continuous query modeling involves defining directed graphs of windowsfor event stream manipulation and transformation. A window in thecontext of event stream manipulation and transformation is a processingnode in an event stream processing model. A window in a continuous querycan perform aggregations, computations, pattern-matching, and otheroperations on data flowing through the window. A continuous query may bedescribed as a directed graph of source, relational, pattern matching,and procedural windows. The one or more source windows 806 and the oneor more derived windows 808 represent continuously executing queriesthat generate updates to a query result set as new event blocks streamthrough ESPE 800. A directed graph, for example, is a set of nodesconnected by edges, where the edges have a direction associated withthem.

An event object may be described as a packet of data accessible as acollection of fields, with at least one of the fields defined as a keyor unique identifier (ID). The event object may be created using avariety of formats including binary, alphanumeric, XML, etc. Each eventobject may include one or more fields designated as a primary identifier(ID) for the event so ESPE 800 can support operation codes (opcodes) forevents including insert, update, upsert, and delete. Upsert opcodesupdate the event if the key field already exists; otherwise, the eventis inserted. For illustration, an event object may be a packed binaryrepresentation of a set of field values and include both metadata andfield data associated with an event. The metadata may include an opcodeindicating if the event represents an insert, update, delete, or upsert,a set of flags indicating if the event is a normal, partial-update, or aretention generated event from retention policy management, and a set ofmicrosecond timestamps that can be used for latency measurements.

An event block object may be described as a grouping or package of eventobjects. An event stream may be described as a flow of event blockobjects. A continuous query of the one or more continuous queries 804transforms a source event stream made up of streaming event blockobjects published into ESPE 800 into one or more output event streamsusing the one or more source windows 806 and the one or more derivedwindows 808. A continuous query can also be thought of as data flowmodeling.

The one or more source windows 806 are at the top of the directed graphand have no windows feeding into them. Event streams are published intothe one or more source windows 806, and from there, the event streamsmay be directed to the next set of connected windows as defined by thedirected graph. The one or more derived windows 808 are all instantiatedwindows that are not source windows and that have other windowsstreaming events into them. The one or more derived windows 808 mayperform computations or transformations on the incoming event streams.The one or more derived windows 808 transform event streams based on thewindow type (that is operators such as join, filter, compute, aggregate,copy, pattern match, procedural, union, etc.) and window settings. Asevent streams are published into ESPE 800, they are continuouslyqueried, and the resulting sets of derived windows in these queries arecontinuously updated.

FIG. 9 illustrates a flow chart showing an example process includingoperations performed by an event stream processing engine, according tosome embodiments of the present technology. As noted, the ESPE 800 (oran associated ESP application) defines how input event streams aretransformed into meaningful output event streams. More specifically, theESP application may define how input event streams from publishers(e.g., network devices providing sensed data) are transformed intomeaningful output event streams consumed by subscribers (e.g., a dataanalytics project being executed by a machine or set of machines).

Within the application, a user may interact with one or more userinterface windows presented to the user in a display under control ofthe ESPE independently or through a browser application in an orderselectable by the user. For example, a user may execute an ESPapplication, which causes presentation of a first user interface window,which may include a plurality of menus and selectors such as drop downmenus, buttons, text boxes, hyperlinks, etc. associated with the ESPapplication as understood by a person of skill in the art. As furtherunderstood by a person of skill in the art, various operations may beperformed in parallel, for example, using a plurality of threads.

At operation 900, an ESP application may define and start an ESPE,thereby instantiating an ESPE at a device, such as machine 220 and/or240. In an operation 902, the engine container is created. Forillustration, ESPE 800 may be instantiated using a function call thatspecifies the engine container as a manager for the model.

In an operation 904, the one or more continuous queries 804 areinstantiated by ESPE 800 as a model. The one or more continuous queries804 may be instantiated with a dedicated thread pool or pools thatgenerate updates as new events stream through ESPE 800. Forillustration, the one or more continuous queries 804 may be created tomodel business processing logic within ESPE 800, to predict eventswithin ESPE 800, to model a physical system within ESPE 800, to predictthe physical system state within ESPE 800, etc. For example, as noted,ESPE 800 may be used to support sensor data monitoring and management(e.g., sensing may include force, torque, load, strain, position,temperature, air pressure, fluid flow, chemical properties, resistance,electromagnetic fields, radiation, irradiance, proximity, acoustics,moisture, distance, speed, vibrations, acceleration, electricalpotential, or electrical current, etc.).

ESPE 800 may analyze and process events in motion or “event streams.”Instead of storing data and running queries against the stored data,ESPE 800 may store queries and stream data through them to allowcontinuous analysis of data as it is received. The one or more sourcewindows 806 and the one or more derived windows 808 may be created basedon the relational, pattern matching, and procedural algorithms thattransform the input event streams into the output event streams tomodel, simulate, score, test, predict, etc. based on the continuousquery model defined and application to the streamed data.

In an operation 906, a publish/subscribe (pub/sub) capability isinitialized for ESPE 800. In an illustrative embodiment, a pub/subcapability is initialized for each project of the one or more projects802. To initialize and enable pub/sub capability for ESPE 800, a portnumber may be provided. Pub/sub clients can use a host name of an ESPdevice running the ESPE and the port number to establish pub/subconnections to ESPE 800.

FIG. 10 illustrates an ESP system 1000 interfacing between publishingdevice 1022 and event subscribing devices 1024 a-c, according toembodiments of the present technology. ESP system 1000 may include ESPdevice or subsystem 851, event publishing device 1022, an eventsubscribing device A 1024 a, an event subscribing device B 1024 b, andan event subscribing device C 1024 c. Input event streams are output toESP device 851 by publishing device 1022. In alternative embodiments,the input event streams may be created by a plurality of publishingdevices. The plurality of publishing devices further may publish eventstreams to other ESP devices. The one or more continuous queriesinstantiated by ESPE 800 may analyze and process the input event streamsto form output event streams output to event subscribing device A 1024a, event subscribing device B 1024 b, and event subscribing device C1024 c. ESP system 1000 may include a greater or a fewer number of eventsubscribing devices of event subscribing devices.

Publish-subscribe is a message-oriented interaction paradigm based onindirect addressing. Processed data recipients specify their interest inreceiving information from ESPE 800 by subscribing to specific classesof events, while information sources publish events to ESPE 800 withoutdirectly addressing the receiving parties. ESPE 800 coordinates theinteractions and processes the data. In some cases, the data sourcereceives confirmation that the published information has been receivedby a data recipient.

A publish/subscribe API may be described as a library that enables anevent publisher, such as publishing device 1022, to publish eventstreams into ESPE 800 or an event subscriber, such as event subscribingdevice A 1024 a, event subscribing device B 1024 b, and eventsubscribing device C 1024 c, to subscribe to event streams from ESPE800. For illustration, one or more publish/subscribe APIs may bedefined. Using the publish/subscribe API, an event publishingapplication may publish event streams into a running event streamprocessor project source window of ESPE 800, and the event subscriptionapplication may subscribe to an event stream processor project sourcewindow of ESPE 800.

The publish/subscribe API provides cross-platform connectivity andendianness compatibility between ESP application and other networkedapplications, such as event publishing applications instantiated atpublishing device 1022, and event subscription applications instantiatedat one or more of event subscribing device A 1024 a, event subscribingdevice B 1024 b, and event subscribing device C 1024 c.

Referring back to FIG. 9, operation 906 initializes thepublish/subscribe capability of ESPE 800. In an operation 908, the oneor more projects 802 are started. The one or more started projects mayrun in the background on an ESP device. In an operation 910, an eventblock object is received from one or more computing device of the eventpublishing device 1022.

ESP subsystem 800 may include a publishing client 1002, ESPE 800, asubscribing client A 1004, a subscribing client B 1006, and asubscribing client C 1008. Publishing client 1002 may be started by anevent publishing application executing at publishing device 1022 usingthe publish/subscribe API. Subscribing client A 1004 may be started byan event subscription application A, executing at event subscribingdevice A 1024 a using the publish/subscribe API. Subscribing client B1006 may be started by an event subscription application B executing atevent subscribing device B 1024 b using the publish/subscribe API.Subscribing client C 1008 may be started by an event subscriptionapplication C executing at event subscribing device C 1024 c using thepublish/subscribe API.

An event block object containing one or more event objects is injectedinto a source window of the one or more source windows 806 from aninstance of an event publishing application on event publishing device1022. The event block object may generated, for example, by the eventpublishing application and may be received by publishing client 1002. Aunique ID may be maintained as the event block object is passed betweenthe one or more source windows 806 and/or the one or more derivedwindows 808 of ESPE 800, and to subscribing client A 1004, subscribingclient B 1006, and subscribing client C 1008 and to event subscriptiondevice A 1024 a, event subscription device B 1024 b, and eventsubscription device C 1024 c. Publishing client 1002 may furthergenerate and include a unique embedded transaction ID in the event blockobject as the event block object is processed by a continuous query, aswell as the unique ID that publishing device 1022 assigned to the eventblock object.

In an operation 912, the event block object is processed through the oneor more continuous queries 804. In an operation 914, the processed eventblock object is output to one or more computing devices of the eventsubscribing devices 1024 a-c. For example, subscribing client A 1004,subscribing client B 1006, and subscribing client C 1008 may send thereceived event block object to event subscription device A 1024 a, eventsubscription device B 1024 b, and event subscription device C 1024 c,respectively.

ESPE 800 maintains the event block containership aspect of the receivedevent blocks from when the event block is published into a source windowand works its way through the directed graph defined by the one or morecontinuous queries 804 with the various event translations before beingoutput to subscribers. Subscribers can correlate a group of subscribedevents back to a group of published events by comparing the unique ID ofthe event block object that a publisher, such as publishing device 1022,attached to the event block object with the event block ID received bythe subscriber.

In an operation 916, a determination is made concerning whether or notprocessing is stopped. If processing is not stopped, processingcontinues in operation 910 to continue receiving the one or more eventstreams containing event block objects from the, for example, one ormore network devices. If processing is stopped, processing continues inan operation 918. In operation 918, the started projects are stopped. Inoperation 920, the ESPE is shutdown.

As noted, in some embodiments, big data is processed for an analyticsproject after the data is received and stored. In other embodiments,distributed applications process continuously flowing data in real-timefrom distributed sources by applying queries to the data beforedistributing the data to geographically distributed recipients. Asnoted, an event stream processing engine (ESPE) may continuously applythe queries to the data as it is received and determines which entitiesreceive the processed data. This allows for large amounts of data beingreceived and/or collected in a variety of environments to be processedand distributed in real time. For example, as shown with respect to FIG.2, data may be collected from network devices that may include deviceswithin the internet of things, such as devices within a home automationnetwork. However, such data may be collected from a variety of differentresources in a variety of different environments. In any such situation,embodiments of the present technology allow for real-time processing ofsuch data.

Aspects of the current disclosure provide technical solutions totechnical problems, such as computing problems that arise when an ESPdevice fails which results in a complete service interruption andpotentially significant data loss. The data loss can be catastrophicwhen the streamed data is supporting mission critical operations such asthose in support of an ongoing manufacturing or drilling operation. Anembodiment of an ESP system achieves a rapid and seamless failover ofESPE running at the plurality of ESP devices without serviceinterruption or data loss, thus significantly improving the reliabilityof an operational system that relies on the live or real-time processingof the data streams. The event publishing systems, the event subscribingsystems, and each ESPE not executing at a failed ESP device are notaware of or effected by the failed ESP device. The ESP system mayinclude thousands of event publishing systems and event subscribingsystems. The ESP system keeps the failover logic and awareness withinthe boundaries of out-messaging network connector and out-messagingnetwork device.

In one example embodiment, a system is provided to support a failoverwhen event stream processing (ESP) event blocks. The system includes,but is not limited to, an out-messaging network device and a computingdevice. The computing device includes, but is not limited to, aprocessor and a computer-readable medium operably coupled to theprocessor. The processor is configured to execute an ESP engine (ESPE).The computer-readable medium has instructions stored thereon that, whenexecuted by the processor, cause the computing device to support thefailover. An event block object is received from the ESPE that includesa unique identifier. A first status of the computing device as active orstandby is determined. When the first status is active, a second statusof the computing device as newly active or not newly active isdetermined. Newly active is determined when the computing device isswitched from a standby status to an active status. When the secondstatus is newly active, a last published event block object identifierthat uniquely identifies a last published event block object isdetermined. A next event block object is selected from a non-transitorycomputer-readable medium accessible by the computing device. The nextevent block object has an event block object identifier that is greaterthan the determined last published event block object identifier. Theselected next event block object is published to an out-messagingnetwork device. When the second status of the computing device is notnewly active, the received event block object is published to theout-messaging network device. When the first status of the computingdevice is standby, the received event block object is stored in thenon-transitory computer-readable medium.

FIG. 11 is a flow chart of an example of a process for generating andusing a machine-learning model according to some aspects. Machinelearning is a branch of artificial intelligence that relates tomathematical models that can learn from, categorize, and makepredictions about data. Such mathematical models, which can be referredto as machine-learning models, can classify input data among two or moreclasses; cluster input data among two or more groups; predict a resultbased on input data; identify patterns or trends in input data; identifya distribution of input data in a space; or any combination of these.Examples of machine-learning models can include (i) neural networks;(ii) decision trees, such as classification trees and regression trees;(iii) classifiers, such as Naïve bias classifiers, logistic regressionclassifiers, ridge regression classifiers, random forest classifiers,least absolute shrinkage and selector (LASSO) classifiers, and supportvector machines; (iv) clusterers, such as k-means clusterers, mean-shiftclusterers, and spectral clusterers; (v) factorizers, such asfactorization machines, principal component analyzers and kernelprincipal component analyzers; and (vi) ensembles or other combinationsof machine-learning models. In some examples, neural networks caninclude deep neural networks, feed-forward neural networks, recurrentneural networks, convolutional neural networks, radial basis function(RBF) neural networks, echo state neural networks, long short-termmemory neural networks, bi-directional recurrent neural networks, gatedneural networks, hierarchical recurrent neural networks, stochasticneural networks, modular neural networks, spiking neural networks,dynamic neural networks, cascading neural networks, neuro-fuzzy neuralnetworks, or any combination of these.

Different machine-learning models may be used interchangeably to performa task. Examples of tasks that can be performed at least partially usingmachine-learning models include various types of scoring;bioinformatics; cheminformatics; software engineering; fraud detection;customer segmentation; generating online recommendations; adaptivewebsites; determining customer lifetime value; search engines; placingadvertisements in real time or near real time; classifying DNAsequences; affective computing; performing natural language processingand understanding; object recognition and computer vision; roboticlocomotion; playing games; optimization and metaheuristics; detectingnetwork intrusions; medical diagnosis and monitoring; or predicting whenan asset, such as a machine, will need maintenance.

Any number and combination of tools can be used to createmachine-learning models. Examples of tools for creating and managingmachine-learning models can include SAS® Enterprise Miner, SAS® RapidPredictive Modeler, and SAS® Model Manager, SAS Cloud Analytic Services(CAS)®, SAS Viya® of all which are by SAS Institute Inc. of Cary, N.C.

Machine-learning models can be constructed through an at least partiallyautomated (e.g., with little or no human involvement) process calledtraining. During training, input data can be iteratively supplied to amachine-learning model to enable the machine-learning model to identifypatterns related to the input data or to identify relationships betweenthe input data and output data. With training, the machine-learningmodel can be transformed from an untrained state to a trained state.Input data can be split into one or more training sets and one or morevalidation sets, and the training process may be repeated multipletimes. The splitting may follow a k-fold cross-validation rule, aleave-one-out-rule, a leave-p-out rule, or a holdout rule. An overviewof training and using a machine-learning model is described below withrespect to the flow chart of FIG. 11.

In block 1104, training data is received. In some examples, the trainingdata is received from a remote database or a local database, constructedfrom various subsets of data, or input by a user. The training data canbe used in its raw form for training a machine-learning model orpre-processed into another form, which can then be used for training themachine-learning model. For example, the raw form of the training datacan be smoothed, truncated, aggregated, clustered, or otherwisemanipulated into another form, which can then be used for training themachine-learning model.

In block 1106, a machine-learning model is trained using the trainingdata. The machine-learning model can be trained in a supervised,unsupervised, or semi-supervised manner. In supervised training, eachinput in the training data is correlated to a desired output. Thisdesired output may be a scalar, a vector, or a different type of datastructure such as text or an image. This may enable the machine-learningmodel to learn a mapping between the inputs and desired outputs. Inunsupervised training, the training data includes inputs, but notdesired outputs, so that the machine-learning model has to findstructure in the inputs on its own. In semi-supervised training, onlysome of the inputs in the training data are correlated to desiredoutputs.

In block 1108, the machine-learning model is evaluated. For example, anevaluation dataset can be obtained, for example, via user input or froma database. The evaluation dataset can include inputs correlated todesired outputs. The inputs can be provided to the machine-learningmodel and the outputs from the machine-learning model can be compared tothe desired outputs. If the outputs from the machine-learning modelclosely correspond with the desired outputs, the machine-learning modelmay have a high degree of accuracy. For example, if 90% or more of theoutputs from the machine-learning model are the same as the desiredoutputs in the evaluation dataset, the machine-learning model may have ahigh degree of accuracy. Otherwise, the machine-learning model may havea low degree of accuracy. The 90% number is an example only. A realisticand desirable accuracy percentage is dependent on the problem and thedata.

In some examples, if the machine-learning model has an inadequate degreeof accuracy for a particular task, the process can return to block 1106,where the machine-learning model can be further trained using additionaltraining data or otherwise modified to improve accuracy. If themachine-learning model has an adequate degree of accuracy for theparticular task, the process can continue to block 1110.

In block 1110, new data is received. In some examples, the new data isreceived from a remote database or a local database, constructed fromvarious subsets of data, or input by a user. The new data may be unknownto the machine-learning model. For example, the machine-learning modelmay not have previously processed or analyzed the new data.

In block 1112, the trained machine-learning model is used to analyze thenew data and provide a result. For example, the new data can be providedas input to the trained machine-learning model. The trainedmachine-learning model can analyze the new data and provide a resultthat includes a classification of the new data into a particular class,a clustering of the new data into a particular group, a prediction basedon the new data, or any combination of these.

In block 1114, the result is post-processed. For example, the result canbe added to, multiplied with, or otherwise combined with other data aspart of a job. As another example, the result can be transformed from afirst format, such as a time series format, into another format, such asa count series format. Any number and combination of operations can beperformed on the result during post-processing.

A more specific example of a machine-learning model is the neuralnetwork 1200 shown in FIG. 12. The neural network 1200 is represented asmultiple layers of interconnected neurons, such as neuron 1208, that canexchange data between one another. The layers include an input layer1202 for receiving input data, a hidden layer 1204, and an output layer1206 for providing a result. The hidden layer 1204 is referred to ashidden because it may not be directly observable or have its inputdirectly accessible during the normal functioning of the neural network1200. Although the neural network 1200 is shown as having a specificnumber of layers and neurons for exemplary purposes, the neural network1200 can have any number and combination of layers, and each layer canhave any number and combination of neurons.

The neurons and connections between the neurons can have numericweights, which can be tuned during training. For example, training datacan be provided to the input layer 1202 of the neural network 1200, andthe neural network 1200 can use the training data to tune one or morenumeric weights of the neural network 1200. In some examples, the neuralnetwork 1200 can be trained using backpropagation. Backpropagation caninclude determining a gradient of a particular numeric weight based on adifference between an actual output of the neural network 1200 and adesired output of the neural network 1200. Based on the gradient, one ormore numeric weights of the neural network 1200 can be updated to reducethe difference, thereby increasing the accuracy of the neural network1200. This process can be repeated multiple times to train the neuralnetwork 1200. For example, this process can be repeated hundreds orthousands of times to train the neural network 1200.

In some examples, the neural network 1200 is a feed-forward neuralnetwork. In a feed-forward neural network, every neuron only propagatesan output value to a subsequent layer of the neural network 1200. Forexample, data may only move one direction (forward) from one neuron tothe next neuron in a feed-forward neural network.

In other examples, the neural network 1200 is a recurrent neuralnetwork. A recurrent neural network can include one or more feedbackloops, allowing data to propagate in both forward and backward throughthe neural network 1200. This can allow for information to persistwithin the recurrent neural network. For example, a recurrent neuralnetwork can determine an output based at least partially on informationthat the recurrent neural network has seen before, giving the recurrentneural network the ability to use previous input to inform the output.

In some examples, the neural network 1200 operates by receiving a vectorof numbers from one layer; transforming the vector of numbers into a newvector of numbers using a matrix of numeric weights, a nonlinearity, orboth; and providing the new vector of numbers to a subsequent layer ofthe neural network 1200. Each subsequent layer of the neural network1200 can repeat this process until the neural network 1200 outputs afinal result at the output layer 1206. For example, the neural network1200 can receive a vector of numbers as an input at the input layer1202. The neural network 1200 can multiply the vector of numbers by amatrix of numeric weights to determine a weighted vector. The matrix ofnumeric weights can be tuned during the training of the neural network1200. The neural network 1200 can transform the weighted vector using anonlinearity, such as a sigmoid tangent or the hyperbolic tangent. Insome examples, the nonlinearity can include a rectified linear unit,which can be expressed using the equation y=max(x, 0) where y is theoutput and x is an input value from the weighted vector. The transformedoutput can be supplied to a subsequent layer, such as the hidden layer1204, of the neural network 1200. The subsequent layer of the neuralnetwork 1200 can receive the transformed output, multiply thetransformed output by a matrix of numeric weights and a nonlinearity,and provide the result to yet another layer of the neural network 1200.This process continues until the neural network 1200 outputs a finalresult at the output layer 1206.

Other examples of the present disclosure may include any number andcombination of machine-learning models having any number and combinationof characteristics. The machine-learning model(s) can be trained in asupervised, semi-supervised, or unsupervised manner, or any combinationof these. The machine-learning model(s) can be implemented using asingle computing device or multiple computing devices, such as thecommunications grid computing system 400 discussed above.

Implementing some examples of the present disclosure at least in part byusing machine-learning models can reduce the total number of processingiterations, time, memory, electrical power, or any combination of theseconsumed by a computing device when analyzing data. For example, aneural network may more readily identify patterns in data than otherapproaches. This may enable the neural network to analyze the data usingfewer processing cycles and less memory than other approaches, whileobtaining a similar or greater level of accuracy.

Some machine-learning approaches may be more efficiently and speedilyexecuted and processed with machine-learning specific processors (e.g.,not a generic CPU). Such processors may also provide an energy savingswhen compared to generic CPUs. For example, some of these processors caninclude a graphical processing unit (GPU), an application-specificintegrated circuit (ASIC), a field-programmable gate array (FPGA), anartificial intelligence (AI) accelerator, a neural computing core, aneural computing engine, a neural processing unit, a purpose-built chiparchitecture for deep learning, and/or some other machine-learningspecific processor that implements a machine learning approach or one ormore neural networks using semiconductor (e.g., silicon (Si), galliumarsenide (GaAs)) devices. These processors may also be employed inheterogeneous computing architectures with a number of and a variety ofdifferent types of cores, engines, nodes, and/or layers to achievevarious energy efficiencies, processing speed improvements, datacommunication speed improvements, and/or data efficiency targets andimprovements throughout various parts of the system when compared to ahomogeneous computing architecture that employs CPUs for general purposecomputing.

FIG. 13A illustrates a block diagram of an example embodiment of adistributed processing system 2000 incorporating one or more sourcedevices 2100, one or more reviewing devices 2800, one or more federateddevices 2500 that may form a federated device grid 2005, and/or one ormore storage devices 2600 that may form a storage device grid 2006. FIG.13B illustrates exchanges, through a network 2999, of communicationsamong the devices 2100, 2500, 2600 and/or 2800 associated with thecontrolled storage of, access to and/or performance of job flows ofanalyses associated with various objects within one or more federatedareas 2566. Referring to both FIGS. 13A and 13B, such communications mayinclude the exchange of job flow definitions 2220, data sets 2330 and/ortask routines 2440. However, one or more of the devices 2100, 2500, 2600and/or 2800 may also exchange, via the network 2999, other data entirelyunrelated to any object stored within any federated area 2566. Invarious embodiments, the network 2999 may be a single network that mayextend within a single building or other relatively limited area, acombination of connected networks that may extend a considerabledistance, and/or may include the Internet. Thus, the network 2999 may bebased on any of a variety (or combination) of communicationstechnologies by which communications may be effected, including withoutlimitation, wired technologies employing electrically and/or opticallyconductive cabling, and wireless technologies employing infrared, radiofrequency (RF) or other forms of wireless transmission.

In various embodiments, each of the one or more source devices 2100 mayincorporate one or more of an input device 2110, a display 2180, aprocessor 2150, a storage 2160 and a network interface 2190 to coupleeach of the one or more source devices 2100 to the network 2999. Thestorage 2160 may store a control routine 2140, one or more job flowdefinitions 2220, one or more DAGs 2270, one or more data sets 2330, oneor more task routines 2440 and/or one or more macros 2470. The controlroutine 2140 may incorporate a sequence of instructions operative on theprocessor 2150 of each of the one or more source devices 2100 toimplement logic to perform various functions. In embodiments in whichmultiple ones of the source devices 2100 are operated together as a gridof the source devices 2100, the sequence of instructions of the controlroutine 2140 may be operative on the processor 2150 of each of thosesource devices 2100 to perform various functions at least partially inparallel with the processors 2150 of others of the source devices 2100.

In some embodiments, one or more of the source devices 2100 may beoperated by persons and/or entities (e.g., scholastic entities,governmental entities, business entities, etc.) to generate and/ormaintain analysis routines, that when executed by one or moreprocessors, causes an analysis of data to be performed. In suchembodiments, execution of the control routine 2140 may cause theprocessor 2150 to operate the input device 2110 and/or the display 2180to provide a user interface by which an operator of the source device2100 may use the source device 2100 to develop such routines and/or totest their functionality by causing the processor 2150 to execute suchroutines. Among such routines may be routines intended for storageand/or execution within a federated area 2566. As will be explained ingreater detail, a rule imposed in connection with such use of afederated area 2566 may be that routines are required to be storedtherein as a combination of a set of task routines and a job flowdefinition that specifies aspects of how the set of task routines areexecuted together. In other words, a requirement for the storage and/orexecution of analysis routines within a federated area 2566 may be thatthe analysis itself be defined as a job flow in which a set of tasksthat are performed in a defined order. Thus, an analysis routinegenerated through operation of one or more of the source devices 2100may be required to take the form of multiple task routines 2440 and ajob flow definition 2220 that specifies the manner in which the multipletask routines 2440 are executed by a processor as a combination to causethe performance of the analysis as a job flow.

Further execution of the control routine 2140 may cause the processor2150 of a source device 2100 to operate the input device 2110 and/or thedisplay 2180 to provide a UI by which an operator may provide a commandto generate a DAG 2270 from one or more of the task routines 2440. Aswill be explained in greater detail, the provision of such a UI and theperformance of such operations may be in support of generation and/ormaintenance of analysis routines (i.e., combinations of job flowdefinitions 2220 and task routines 2440) by enabling an operator of oneof the source devices 2100 to request a visual presentation of a DAG2270 so as to be provided with a visual representation of at leastinputs and/or outputs of the one or more task routines 2440 selected forinclusion in the requested DAG 2270. As will also be explained ingreater detail, for each task routine 2440 so selected, a correspondingmacro 2470 may be generated as an intermediate operation towardsgenerating the requested DAG 2270.

Still further execution of the control routine 2140 may cause theprocessor 2150 of a source device 2100 to operate the input device 2110and/or the display 2180 to provide a user interface by which an operatorof the source device 2100 may enter commands. Among those commands maybe a command to the processor 2150 to operate the network interface 2190to transmit such a combination of multiple task routines 2440 andaccompanying job flow definition 2220 via the network 2999 to the one ormore federated devices 2500 for storage within a federated area 2566.The processor 2150 may be further caused to operate the display 2180 topresent a request received via the network 2999 from the one or morefederated devices 2500 (or from one or more other devices that provideaccess control to federated area(s) 2566) on the display 2180 to theoperator of the source device 2100 for the provision of a passwordand/or other security credential. The processor 2150 may then be causedto transmit the password and/or other security credential provided bythe operator (e.g., via the input device 1110) to the one or morefederated devices 2500 (or the one or more access control devices) togain authorization to store the multiple task routines 2440 andaccompanying job flow definition 2220 within a federated area 2566.Further, in some of such embodiments, the operator of the source device2100 may additionally operate the source device 2100 to similarlyprovide the one or more federated devices 2500 with one or more of thedata sets 2330 to also store within a federated area 2566.

The tasks that each of the task routines 2440 may cause a processor toperform may include any of a variety of data analysis tasks, datatransformation tasks and/or data normalization tasks. The data analysistasks may include, and are not limited to, searches and/or statisticalanalyses that entail derivation of approximations, numericalcharacterizations, models, evaluations of hypotheses, and/or predictions(e.g., a prediction by Bayesian analysis of actions of a crowd trying toescape a burning building, or of the behavior of bridge components inresponse to a wind forces). The data transformation tasks may include,and are not limited to, sorting, row and/or column-based mathematicaloperations, row and/or column-based filtering using one or more dataitems of a row or column, and/or reordering data items within a dataobject. The data normalization tasks may include, and are not limitedto, normalizing times of day, dates, monetary values (e.g., normalizingto a single unit of currency), character spacing, use of delimitercharacters (e.g., normalizing use of periods and commas in numericvalues), use of formatting codes, use of big or little Endian encoding,use or lack of use of sign bits, quantities of bits used to representintegers and/or floating point values (e.g., bytes, words, doublewordsor quadwords), etc.

In other embodiments, one or more of the source devices 2100 may beoperated by persons and/or entities to assemble one or more data sets2330. In such embodiments, execution of the control routine 2140 by theprocessor 2150 may cause the processor 2150 to operate the networkinterface 2190, the input device 2110 and/or one or more othercomponents (not shown) to receive data items and to assemble thosereceived data items into one or more of the data sets 2330. By way ofexample, one or more of the source devices 2100 may incorporate and/orbe in communication with one or more sensors to receive data itemsassociated with the monitoring of natural phenomena (e.g., geological ormeteorological events) and/or with the performance of a scientific orother variety of experiment (e.g., a thermal camera or sensors disposedabout a particle accelerator). By way of another example, the processor2150 of one or more of the source devices 2100 may be caused by itsexecution of the control routine 2140 to operate the network interface2190 to await transmissions via the network 2999 from one or more otherdevices providing at least at portion of at least one data set 2330.Upon assembly of one or more data sets 2330, the processor 2150 may becaused by further execution of the control routine 2140 to operate thenetwork interface 2190 to transmit one or more completed data sets 2330to the one or more federated devices 2500 via the network 2999 forstorage within a federated area 2566. The processor 2150 may be furthercaused by execution of the control routine 2140 to automatically provideone or more security credentials to the one or more federated devices2500 (or the one or more access control devices) in response to arequest received therefrom for security credentials as a prerequisite togranting authorization to store one or more completed data sets 2330within a federated area 2566.

Each of the one or more data sets 2330 may include any of a wide varietyof types of data associated with any of a wide variety of subjects. Byway of example, each of the data sets 2330 may include scientificobservation data concerning geological and/or meteorological events, orfrom sensors employed in laboratory experiments in areas such asparticle physics. By way of another example, the data set may includeindications of activities performed by a random sample of individuals ofa population of people in a selected country or municipality, or of apopulation of a threatened species under study in the wild.

In various embodiments, each of the one or more reviewing devices 2800may incorporate one or more of an input device 2810, a display 2880, aprocessor 2850, a storage 2860 and a network interface 2890 to coupleeach of the one or more reviewing devices 2800 to the network 2999. Thestorage 2860 may store a control routine 2840, one or more DAGs 2270,one or more data sets 2370, one or more macros 2470, one or moreinstance logs 2720, and/or one or more result reports 2770. The controlroutine 2840 may incorporate a sequence of instructions operative on theprocessor 2850 of each of the one or more reviewing devices 2800 toimplement logic to perform various functions. In embodiments in whichmultiple ones of the reviewing devices 2800 are operated together as agrid of the reviewing devices 2800, the sequence of instructions of thecontrol routine 2840 may be operative on the processor 2850 of each ofthose reviewing devices 2800 to perform various functions at leastpartially in parallel with the processors 2850 of others of thereviewing devices 2800.

In some embodiments, one or more of the reviewing devices 2800 may beoperated by persons and/or entities (e.g., scholastic entities,governmental entities, business entities, etc.) to request performancesof job flows within one or more federated areas 2566 by the one or morefederated devices 2500, and to provide the one or more reviewing devices2800 with result reports 2770 generated by those performances. In suchembodiments, execution of the control routine 2840 may cause theprocessor 2850 to operate the input device 2810 and/or the display 2880to provide a user interface by which an operator of the reviewing device2800 may initiate such requests, and/or to use the display 2880 to viewone or more of such result reports 2770. Stated differently, one of thereviewing devices 2800 may be operated by a person acting in the role ofa consumer of the results of an analysis to request the one or morefederated devices 2500 to make use of the objects stored within afederated area 2566 to perform an analysis and provide the resultsreport 2770 generated as a result of that performance.

In other embodiments, one or more of the reviewing devices 2800 may beoperated by persons and/or entities to request repeat performances ofpreviously performed job flows within a federated area 2566, and/or toprovide the one or more reviewing devices 2800 with instance logs 2720,data sets 2370 that may be exchanged between task routines during theperformance of a job flow, and/or the result reports 2770 generated bypast performances of job flows within the federated area. In suchembodiments, execution of the control routine 2840 may cause theprocessor 2850 to operate the input device 2810 and/or the display 2880to provide a user interface by which an operator of the reviewing device2800 may initiate such requests. The processor 2850 may also be causedto operate the display 2880 to enable the operator to view one or moreof such instance logs 2720, data sets 2370 (if there are any) and/orresult reports 2770 as part of performing a review of past performancesof job flows. Stated differently, one of the reviewing devices 2800 maybe operated by a person acting in the role of a reviewer of the mannerin which an analysis was performed to request the one or more federateddevices 2500 to provide various objects associated with the performanceof the analysis for use in performing such a review.

By way of example, the operator of one of the reviewing devices may beassociated with a scholastic, governmental or business entity that seeksto review a performance of a job flow of an analysis by another entity.Such a review may be a peer review between two or more entities involvedin scientific or other research, and may be focused on confirmingassumptions on which algorithms were based and/or the correctness of theperformance of those algorithms. Alternatively, such a review may bepart of an inspection by a government agency into the quality of theanalyses performed by and relied upon by a business in making decisionsand/or assessing its own financial soundness, and may seek to confirmwhether correct legally required calculations were used. In addition toa review of the result report 2770 that provides the outputs of ananalysis, a review of the instance log 2720 generated by the performanceof a job flow of an analysis may provide insights into the particulartasks performed and what versions of task routines 2440 were executed toperform those tasks, as well as what data set(s) 2330 were used asinputs. Alternatively or additionally, a review of a data set 2370 thatmay be generated by the performance of one task of a job flow as amechanism to convey data that it generates for use by one or more othertasks of the same job flow may provide indications of where an errorand/or statistical anomaly may have been introduced in the performanceof an analysis.

Further execution of the control routine 2840 may cause the processor2850 of a reviewing device 2800 to operate the input device 2810 and/orthe display 2880 to provide a UI by which an operator may provide acommand to generate a DAG 2270 from one or more of the task routines2440. As will be explained in greater detail, the provision of such a UIand the performance of such operations may be in support ofinvestigating a discrepancy in the results of the performance of a jobflow of an analysis by enabling an operator of one of the reviewingdevices 2800 to request a visual presentation of a DAG 2270 so as to beprovided with a visual representation of at least inputs and/or outputsof the one or more task routines 2440 selected for inclusion in therequested DAG 2270.

In various embodiments, each of the one or more federated devices 2500may incorporate one or more of a processor 2550, a storage 2560, one ormore neuromorphic devices 2570, and a network interface 2590 to coupleeach of the one or more federated devices 2500 to the network 2999. Thestorage 2560 may store a control routine 2540 and/or federated areaparameters 2536. In some embodiments, part of the storage 2560 may beallocated for at least a portion of one or more federated areas 2566. Inother embodiments, each of the one or more federated devices 2500 mayincorporate and/or be coupled to one or more storage devices 2600 withinwhich storage space may be allocated for at least a portion of one ormore federated areas 2566. Regardless of where storage space isallocated for one or more federated areas 2566, each of the one or morefederated areas 2566 may hold one or more job flow definitions 2220, oneor more DAGs 2270, one or more data sets 2330, one or more task routines2440, one or more macros 2470, one or more instance logs 2720, and/orone or more result reports 2770. In embodiments in which job flows areperformed by the one or more federated devices 2500 within a federatedarea 2566, such a federated area 2566 may at least temporarily hold oneor more data sets 2370 during times when one or more of the data sets2370 are generated and temporarily maintained as part of exchanging databetween tasks during the performance of one or more job flows. Inembodiments in which DAGs 2270 are generated by the one or morefederated devices 2500 within a federated area 2566, such a federatedarea 2566 may at least temporarily hold one or more macros 2470 duringtimes when one or more of the macros 2470 are generated as part ofgenerating a DAG 2270.

In some embodiments that include the one or more storage devices 2600 inaddition to the one or more federated devices 2500, the maintenance ofthe one or more federated areas 2566 within such separate and distinctstorage devices may be part of an approach of specialization between thefederated devices 2500 and the storage devices 2600. More specifically,there may be numerous ones of the federated devices 2500 forming thegrid 2005 in which each of the federated devices 2500 may incorporateprocessing and/or other resources selected to better enable theexecution of task routines 2440 as part of performing job flows definedby the job flow definitions 2220. Correspondingly, there may be numerousones of the storage devices 2600 forming the grid 2006 in which thestorage devices 2600 may be organized and interconnected in a mannerproviding a distributed storage system that may provide increased speedof access to objects within each of the one or more federated areas 2566through parallelism, and/or may provide fault tolerance of storage. Suchdistributed storage may also be deemed desirable to better accommodatethe storage of particularly large ones of the data sets 2330 and/or2370, as well as any particularly large data sets that may beincorporated into one or more of the result reports 2770.

The control routine 2540 may incorporate a sequence of instructionsoperative on the processor 2550 of each of the one or more federateddevices 2500 to implement logic to perform various functions. Inembodiments in which multiple ones of the federated devices 2500 areoperated together as the grid 2005 of the federated devices 2500, thesequence of instructions of the control routine 2540 may be operative onthe processor 2550 of each of the federated devices 2500 to performvarious functions at least partially in parallel with the processors2550 of others of the federated devices 2500. As will be described ingreater detail, among such functions may be the at least partiallyparallel performance of job flows defined by one or more of the job flowdefinitions 2220, which may include the at least partially parallelexecution of one or more of the task routines 2440 to perform tasksspecified by the one or more job flow definitions 2220. As will also bedescribed in greater detail, also among such functions may be theoperation of the one or more neuromorphic devices 2570 to instantiateone or more neural networks to enable neuromorphic processing to beemployed in the performance of one or more of such tasks.

As depicted, the control routine 2540 may include a federated areacomponent 2546 operable on the processor 2550 to generate at least aportion of each of the one or more federated areas 2566 within eitherthe storage 2560 or one or more of the storage devices 2600. In sodoing, the processor 2550 may be caused to retrieve specifications fromwithin the federated area parameters 2536 of various aspects of each ofthe one or more federated areas 2566. By way of example, the federatedarea parameters 2536 may specify a minimum and/or maximum amount ofstorage space to be allocated to each federated area 2566, a manner oforganizing the objects stored therein, one or more aspects of the mannerin which the storage devices 2600 are operated together to providestorage space for the one or more federated areas 2566, etc.

FIG. 14A illustrates a block diagram of another example embodiment of adistributed processing system 2000 also incorporating one or more sourcedevices 2100, one or more reviewing devices 2800, one or more federateddevices 2500 that may form the federated device grid 2005, and/or one ormore storage devices 2600 that may form the storage device grid 2006.FIG. 14B illustrates exchanges, through a network 2999, ofcommunications among the devices 2100, 2500, 2600 and/or 2800 associatedwith the controlled storage of and/or access to various objects withinone or more federated areas 2566. The example distributed processingsystem 2000 of FIGS. 14A-B is substantially similar to the exampleprocessing system 2000 of FIGS. 13A-B, but featuring an alternateembodiment of the one or more federated devices 2500 providing anembodiment of the one or more federated areas 2566 within which jobflows are not performed. Thus, while task routines 2440 may be executedby the one or more federated devices 2500 within each of the one or morefederated areas 2566 in addition to storing objects within each of theone or more federated areas 2566 of FIGS. 13A-B, in FIGS. 14A-B, each ofthe one or more federated areas 2566 serves as a location in whichobjects may be stored, but within which no task routines 2440 areexecuted.

Instead, in the example distributed processing system 2000 of FIGS.14A-B, the performance of job flows, including the execution of taskroutines 2440 of job flows, may be performed by the one or more sourcedevices 2100 and/or by the one or more reviewing devices 2800. Thus, asbest depicted in FIG. 14B, the one or more source devices 2100 may beoperated to interact with the one or more federated devices 2500 tostore a wider variety of objects associated with the performance of ajob flow within the one or more source devices 2100. More specifically,one of the source devices 2100 may be operated to store, in a federatedarea 2566, a result report 2770 and/or an instance log 2720 associatedwith a performance of a job flow defined by a job flow definition 2220,in addition to also being operated to store the job flow definition2220, along with the associated task routines 2440 and any associateddata sets 2330 in a federated area 2566. Additionally, such a one of thesource devices 2100 may also store any DAGs 2270 and/or macros 2470 thatmay be associated with those task routines 2440. As a result, each ofthe one or more federated areas 2566 is employed to store a record ofperformances of job flows that occur externally thereof.

Correspondingly, as part of a review of a performance of a job flow, theone or more reviewing devices 2800 may be operated to retrieve the jobflow definition 2220 of the job flow, along with the associated taskroutines 2440 and any associated data sets 2330 from a federated area2566, in addition to retrieving the corresponding result report 2770generated by the performance and/or the instance log 2720 detailingaspects of the performance. With such a more complete set of the objectsassociated with the performance retrieved from one or more federatedareas 2566, the one or more reviewing devices 2800 may then be operatedto independently repeat the performance earlier carried out by the oneor more source devices 2100. Following such an independent performance,a new result report 2870 generated by the independent performance maythen be compared to the retrieved result report 2770 as part ofreviewing the outputs of the earlier performance. Where macros 2470and/or DAGs 2270 associated with the associated task routines 2440 areavailable, the one or more reviewing devices 2800 may also be operatedto retrieve them for use in analyzing any discrepancies revealed by suchan independent performance.

Referring back to all of FIGS. 13A-B and 14A-B, the role of generatingobjects and the role of reviewing the use of those objects in a pastperformance have been presented and discussed as involving separate anddistinct devices, specifically, the source devices 2100 and thereviewing devices 2800, respectively. However, it should be noted thatother embodiments are possible in which the same one or more devices maybe employed in both roles such that at least a subset of the one or moresource devices 1100 and the one or more reviewing devices 1800 may beone and the same.

FIGS. 15A, 15B and 15C, together, illustrate aspects of the provision ofmultiple related federated areas 2566 by the one or more federateddevices 2500. FIG. 15A depicts aspects of a linear hierarchy offederated areas 2566, FIG. 15B depicts aspects of a hierarchical tree offederated areas 2566, and FIG. 15C depicts aspects of navigating amongfederated areas 2566 within the hierarchical tree of FIG. 15B. FIGS.15A-C, together, also illustrate aspects of one or more relationshipsthat may be put in place among federated areas 2566.

Turning to FIG. 15A, a set of federated areas 2566 q, 2566 u and 2566 xmay be maintained within the storage(s) 2560 of the one or morefederated devices 2500 and/or within the one or more storage devices2600. As depicted, a hierarchy of degrees of restriction of access maybe put in place among the federated areas 2566 q, 2566 u and 2566 x.More specifically, the federated area 2566 q may be a private federatedarea subject to the greatest degree of restriction in access among thedepicted federated areas 2566 q, 2566 u and 2566 x. In contrast, thebase federated area 2566 x may a more “public” federated area to theextent that it may be subject to the least restricted degree of accessamong the depicted federated areas 2566 q, 2566 u and 2566 x. Further,the intervening federated area 2566 u may be subject to an intermediatedegree of restriction in access ranging from almost as restrictive asthe greater degree of restriction applied to the private federated area2566 q to almost as unrestrictive as the lesser degree of restrictionapplied to the base federated area 2566 x. Stated differently, thenumber of users granted access may be the largest for the base federatedarea 2566 x, may progressively decrease to an intermediate number forthe intervening federated area 2566 u, and may progressively decreasefurther to a smallest number for the private federated area 2566 q.

There may be any of a variety of scenarios that serve as the basis forselecting the degrees of restriction of access to each of the federatedareas 2566 q, 2566 u and 2566 x. By way of example, all three of thesefederated areas may be under the control of a user of the source device2100 q where such a user may desire to provide the base federated area2566 x as a storage location to which a relatively large number of otherusers may be granted access to make use of objects stored therein by theuser of the source device 2100 q and/or at which other users may storeobjects as a mechanism to provide objects to the user of the sourcedevice 2100 q. Such a user of the source device 2100 q may also desireto provide the intervening federated area 2566 u as a storage locationto which a smaller number of selected other users may be granted access,where the user of the source device 2100 q desires to exercise tightercontrol over the distribution of objects stored therein.

As a result of this hierarchical range of restrictions in access, a userof the depicted source device 2100 x may be granted access to the basefederated area 2566 x, but not to either of the other federated areas2566 u or 2566 q. A user of the depicted source device 2100 u may begranted access to the intervening federated area 2566 u. As depicted,such a user of the source device 2100 u may also be granted access tothe base federated area 2566 x, for which restrictions in access areless than that of the intervening federated area 2566 u. However, such auser of the source device 2100 u may not be granted access to theprivate federated area 2566 q. In contrast, a user of the source device2100 q may be granted access to the private federated area 2566 q. Asdepicted, such a user of the source device 2100 q may also be grantedaccess to the intervening federated area 2566 u and the base federatedarea 2566 x, both of which are subject to lesser restrictions in accessthan the private federated area 2566 q.

As a result of the hierarchy of access restrictions just described,users granted access to the intervening federated area 2566 u aregranted access to objects 2220, 2270, 2330, 2370, 2440, 2470, 2720and/or 2770 that may be stored within either of the interveningfederated area 2566 u or the base federated area 2566 x. To enable suchusers to request the performance of job flows using objects stored ineither of these federated areas 2566 x and 2566 u, an inheritancerelationship may be put in place between the intervening federated area2566 u and the base federated area 2566 x in which objects stored withinthe base federated area 2566 x may be as readily available to beutilized in the performance of a job flow at the request of a user ofthe intervening federated area 2566 u as objects that are stored withinthe intervening federated area 2566 u.

Similarly, also as a result of the hierarchy of access restrictions justdescribed, the one or more users granted access to the private federatedarea 2566 q are granted access to objects 2220, 2270, 2330, 2370, 2440,2470, 2720 and/or 2770 that may be stored within any of the privatefederated area 2566 q, the intervening federated area 2566 u or the basefederated area 2566 x. Correspondingly, to enable such users to requestthe performance of job flows using objects stored in any of thesefederated areas 2566 x and 2566 u, an inheritance relationship may beput in place among the private federated area 2566 q, the interveningfederated area 2566 u and the base federated area 2566 x in whichobjects stored within the base federated area 2566 x or the interveningfederated area 2566 u may be as readily available to be utilized in theperformance of a job flow at the request of a user of the privatefederated area 2566 q as objects that are stored within either theintervening federated area 2566 u or the base federated area 2566 x.

Such inheritance relationships among the federated areas 2566 q, 2566 uand 2566 x may be deemed desirable to encourage efficiency in thestorage of objects throughout by eliminating the need to store multiplecopies of the same objects throughout multiple federated areas 2566 tomake them accessible throughout a hierarchy thereof. More precisely, atask routine 2440 stored within the base federated area 2566 x need notbe copied into the private federated area 2566 q to become available foruse during the performance of a job flow requested by a user of theprivate federated area 2566 q and defined by a job flow definition 2220that may be stored within the private federated area 2566 q.

In some embodiments, such inheritance relationships may be accompaniedby corresponding priority relationships to provide at least a defaultresolution to instances in which multiple versions of an object arestored in different ones of the federated areas 2566 q, 2566 u and 2566x such that one version thereof must be selected for use in theperformance of a job flow. By way of example, and as will be explainedin greater detail, there may be multiple versions of a task routine 2440that may be stored within a single federated area 2566 or acrossmultiple federated areas 2566. This situation may arise as a result ofimprovements being made to such a task routine 2440, and/or for any of avariety of other reasons. Where a priority relationship is in placebetween at least the base federated area 2566 x and the interveningfederated area 2566 u, in addition to an inheritance relationshiptherebetween, and where there is a different version of a task routine2440 within each of the federated areas 2566 u and 2566 x that may beused in the performance of a job flow requested by a user of theintervening federated area 2566 u (e.g., through the source device 2100u), priority may be automatically given by the processor(s) 2550 of theone or more federated devices 2500 to using a version stored within theintervening federated area 2566 u over using any version that may bestored within the base federated area 2566 x. Stated differently, theprocessor(s) 2550 of the one or more federated devices 2500 may becaused to search within the intervening federated area 2566 u, first,for a version of such a task routine 2440, and may use a version foundtherein if a version is found therein. The processor(s) 2550 of the oneor more federated devices 2500 may then entirely forego searching withinthe base federated area 2566 x for a version of such a task routine2440, unless no version of the task routine 2440 is found within theintervening federated area 2566 u.

Similarly, where a priority relationship is in place between among allthree of the federated areas 2566 x, 2566 u and 2566 q, in addition toan inheritance relationship thereamong, and where there is a differentversion of a task routine 2440 within each of the federated areas 2566q, 2566 u and 2566 x that may be used in the performance of a job flowrequested by a user of the private federated area 2566 q (e.g., throughthe source device 2100 q), priority may be automatically given to usingthe version stored within the private federated area 2566 q over usingany version that may be stored within either the intervening federatedarea 2566 u or the base federated area 2566 x. However, if no version ofsuch a task routine 2440 is found within the private federated area 2566q, then the processor(s) 2550 of the one or more federated devices 2500may be caused to search within the intervening federated area 2566 u fora version of such a task routine 2440, and may use a version foundtherein if a version is found therein. However, if no version of such atask routine 2440 is found within either the private federated area 2566q or the intervening federated area 2566 u, then the processor(s) 2550of the one or more federated devices 2500 may be caused to search withinthe base federated area 2566 x for a version of such a task routine2440, and may use a version found therein if a version is found therein.

In some embodiments, inheritance relationships may be accompanied bycorresponding dependency relationships that may be put in place toensure that all objects required to perform a job flow continue to beavailable. As will be explained in greater detail, for such purposes asenabling accountability and/or investigating errors in analyses, it maybe deemed desirable to impose restrictions against actions that may betaken to delete (or otherwise make inaccessible) objects stored within afederated area 2566 that are needed to perform a job flow that isdefined by a job flow definition 2220 within that same federated area2566. Correspondingly, where an inheritance relationship is put in placeamong multiple federated areas 2566, it may be deemed desirable to put acorresponding dependency relationship in place in which similarrestrictions are imposed against deleting (or otherwise makinginaccessible) an object in one federated area 2566 that may be neededfor the performance of a job flow defined by a job flow definition 2220stored within another federated area 2566 that is related by way of aninheritance relationship put in place between the two federated areas2566. More specifically, where a job flow definition 2220 is storedwithin the intervening federated area 2566 u that defines a job flowthat requires a task routine 2440 stored within the base federated area2566 x (which is made accessible from within the intervening federatedarea 2566 u as a result of an inheritance relationship with the basefederated area 2566 x), the processor(s) 2550 of the one or morefederated devices 2500 may not permit the task routine 2440 storedwithin the base federated area 2566 x to be deleted. However, in someembodiments, such a restriction against deleting the task routine 2440stored within the base federated area 2566 x may cease to be imposed ifthe job flow definition 2220 that defines the job flow that requiresthat task routine 2440 is deleted, and there are no other job flowdefinitions 2220 stored elsewhere that also have such a dependency onthat task routine 2440.

Similarly, where a job flow definition 2220 is stored within the privatefederated area 2566 q that defines a job flow that requires a taskroutine 2440 stored within either the intervening federated area 2566 uor the base federated area 2566 x (with which there may be aninheritance relationship), the processor(s) of the one or more federateddevices 2500 may not permit that task routine 2440 to be deleted.However, such a restriction against deleting that task routine 2440 maycease to be imposed if the job flow definition 2220 that defines the jobflow that requires that task routine 2440 is deleted, and there are noother job flow definitions 2220 stored elsewhere that also have such adependency on that task routine 2440.

In concert with the imposition of inheritance and/or priorityrelationships among a set of federated areas 2566, the exact subset offederated areas 2566 to which a user is granted access may be used as abasis to automatically select a “perspective” from which job flows maybe performed by the one or more federated devices 2500 at the request ofthat user. Stated differently, where a user requests the performance ofa job flow, the retrieval of objects required for that performance maybe based, at least by default, on what objects are available at thefederated area 2566 among the one or more federated areas 2566 to whichthe user is granted access that has highest degree of accessrestriction. The determination of what objects are so available may takeinto account any inheritance and/or priority relationships that may bein place that include such a federated area 2566. Thus, where a usergranted access to the private federated area 2566 q requests theperformance of a job flow, the processor(s) 2550 of the federateddevices 2500 may be caused to select the private federated area 2566 qas the perspective on which determinations concerning which objects areavailable for use in that performance will be based, since the federatedarea 2566 q is the federated area 2566 with the most restricted accessthat the user has been granted access to within the depicted hierarchyof federated areas 2566. With the private federated area 2566 q soselected as the perspective, any inheritance and/or priorityrelationships that may be in place between the private federated area2566 q and either of the intervening federated area 2566 u or the basefederated area 2566 x may be taken into account in determining whetherany objects stored within either are to be deemed available for use inthat performance (which may be a necessity if there are any objects thatare needed for that performance that are not stored within the privatefederated area 2566 q).

Alternatively or additionally, in some embodiments, such an automaticselection of perspective may be used to select the storage space inwhich a performance takes place. Stated differently, as part ofmaintaining the security that is intended to be provided through theimposition of a hierarchy of degrees of access restriction acrossmultiple federated areas 2566, a performance of a job flow requested bya user may, at least by default, be performed within the federated areathat has the highest degree of access restriction among the one or morefederated areas to which that user has been granted access. Thus, wherea user granted access to the private federated area 2566 q requests aperformance of a job flow by the one or more federated devices 2500,such a requested performance of that job flow may automatically be soperformed by the processor(s) 2550 of the one or more federated devices2500 within the storage space of the private federated area 2566 q. Inthis way, aspects of such a performance are kept out of reach from otherusers that have not been granted access to the private federated area2566 q, including any objects that may be generated as a result of sucha performance (e.g., temporary data sets 2370, result reports 2770,etc.). Such a default selection of a federated area 2566 having morerestricted access in which to perform a job flow may be based on apresumption that each user will prefer to have the job flow performancesthat they request being performed within the most secure federated area2566 to which they have been granted access.

It should be noted that, although a linear hierarchy of just threefederated areas is depicted in FIG. 15A for sake of simplicity ofdepiction and discussion, other embodiments of a linear hierarchy arepossible in which there may be multiple intervening federated areas 2566of progressively changing degree of restriction in access between thebase federated area 2566 x and the private federated area 2566 q.Therefore, the depicted quantity of federated areas should not be takenas limiting.

It should also be noted that, although just a single source device 2100is depicted as having been granted access to each of the depictedfederated areas 2566, this has also been done for sake of simplicity ofdepiction and discussion, and other embodiments are possible in whichaccess to one or more of the depicted federated areas 2566 may begranted to users of more than one device. More specifically, the mannerin which restrictions in access to a federated area 2566 may beimplemented may be in any of a variety of ways, including and notlimited to, restricting access to one or more particular users (e.g.,through use of passwords or other security credentials that areassociated with particular persons and/or with particular organizationsof people), or restricting access to one or more particular devices(e.g., through certificates or security credentials that are storedwithin one or more particular devices that may be designated for use ingaining access).

Turning to FIG. 15B, a larger set of federated areas 2566 m, 2566 q,2566 r, 2566 u and 2566 x may be maintained within the storage(s) 2560of the one or more federated devices 2500 and/or within the one or morestorage devices 2600. As depicted, a hierarchy of degrees of restrictionof access, like the hierarchy depicted in FIG. 15A, may be put in placeamong the federated areas 2566 within each of multiple branches and/orsub-branches of a hierarchical tree. More specifically, each of thefederated areas 2566 m, 2566 q and 2566 r may each be a privatefederated area subject to the highest degrees of restriction in accessamong the depicted federated areas 2566 m, 2566 q, 2566 r, 2566 u and2566 x. Again, in contrast, the base federated area 2566 x may be a morepublic federated area to the extent that it may be subject to the leastrestricted degree of access among the depicted federated areas 2566 m,2566 q, 2566 r, 2566 u and 2566 x. Further, the intervening federatedarea 2566 u interposed between the base federated area 2566 x and eachof the private federated areas 2566 q and 2566 r may be subject to anintermediate degree of restriction in access ranging from almost asrestrictive as the degree of restriction applied to either of theprivate federated areas 2566 q or 2566 r to almost as unrestrictive asthe degree of restriction applied to the base federated area 2566 x.Thus, as in the case of the linear hierarchy depicted in FIG. 15A, thenumber of users granted access may be the largest for the base federatedarea 2566 x, may progressively decrease to an intermediate number forthe intervening federated area 2566 u, and may progressively decreasefurther to smaller numbers for each of the private federated areas 2566m, 2566 q and 2566 r. Indeed, the hierarchical tree of federated areas2566 of FIG. 15B shares many of the characteristics concerningrestrictions of access of the linear hierarchy of federated areas 2566of FIG. 15A, such that the linear hierarchy of FIG. 15A may be aptlydescribed as a hierarchical tree without branches.

As a result of the depicted hierarchical range of restrictions inaccess, a user of the depicted source device 2100 x may be grantedaccess to the base federated area 2566 x, but not to any of the otherfederated areas 2566 m, 2566 q, 2566 r or 2566 u. A user of the depictedsource device 2100 u may be granted access to the intervening federatedarea 2566 u, and may also be granted access to the base federated area2566 x, for which restrictions in access are less than that of theintervening federated area 2566 u. However, such a user of the sourcedevice 2100 u may not be granted access to any of the private federatedareas 2566 m, 2566 q or 2566 r. In contrast, a user of the source device2100 q may be granted access to the private federated area 2566 q, andmay also granted access to the intervening federated area 2566 u and thebase federated area 2566 x, both of which are subject to lesserrestrictions in access than the private federated area 2566 q. A user ofthe source device 2100 r may similarly be granted access to the privatefederated area 2566 r, and may similarly also be granted access to theintervening federated area 2566 u and the base federated area 2566 x.Additionally, a user of the source device 2100 m may be granted accessto the private federated area 2566 m, and may also be granted access tothe base federated area 2566 x. However, none of the users of the sourcedevices 2100 m, 2100 q and 2100 r may be granted access to the others ofthe private federated areas 2566 m, 2566 q and 2566 r.

As in the case of the linear hierarchy of FIG. 15A, within the depictedbranch 2569 xm, one or more of inheritance, priority and/or dependencyrelationships may be put in place to enable objects stored within thebase federated area 2566 x to be accessible from the private federatedarea 2566 m to the same degree as objects stored within the privatefederated area 2566 m. Similarly, within the depicted branch 2569 xqr,and within each of the depicted sub-branches 2569 uq and 2569 ur, one ormore of inheritance, priority and/or dependency relationships may be putin place to enable objects stored within either of the interveningfederated area 2566 u and the base federated area 2566 x to beaccessible from the private federated areas 2566 q and 2566 r to thesame degree as objects stored within the private federated areas 2566 qand 2566 r, respectively.

Turning to FIG. 15C, the same hierarchical tree of federated areas 2566m, 2566 q, 2566 r, 2566 u and 2566 x of FIG. 15B is again depicted toillustrate an example of the use of web access techniques to enable auser of a remote device (e.g., one of the source devices 2100 or one ofthe reviewing devices 2800) to navigate about the hierarchical tree andtoward a desired one of the depicted federated areas 2566 m, 2566 q,2566 r, 2566 u or 2566 x. More specifically, each of the federated areas2566 m, 2566 q, 2566 r, 2566 u and 2566 x may be assigned ahuman-readable textual name “mary”, “queen”, “roger”, “uncle” and“x-ray”, respectively, and each of the assigned names may form at leastpart of a corresponding URL (or other form of federated area identifier)2568 that is assigned to each of these federated areas. As depicted, thetype of federated area identifier 2568 used is a URL, and each URL maybe structured to provide an indication of where its corresponding one ofthese federated areas is located within the hierarchical tree. By way ofexample, the URL of the base federated area 2566 x, which is located atthe root of the tree, may include the name “x-ray” of the base federatedarea 2566 x, but not include any of the names assigned to any other ofthese federated areas. In contrast, each of the URLs of each of theprivate federated areas located at the leaves of the hierarchical treemay be formed, at least partially, as a concatenation of the names ofthe federated areas that are along the path from each such privatefederated area at a leaf location to the base federated area 2566 x atthe root of the tree. By way of example, the private federated area 2566r may be assigned a URL that includes the names of the private federatedarea 2566 r, the intervening federated area 2566 u and the basefederated area 2566 x, thereby providing an indication of the entirepath from the leaf position of the private federated area 2566 r to theroot position of the base federated area 2566 x.

FIGS. 16A, 16B, 16C, 16D and 16E, together, illustrate the manner inwhich the one or more federated devices 2500 instantiate and maintainfederated areas 2566. FIG. 16A illustrates aspects of selectivelyallowing users of one or more federated areas 2566 to exercise controlover various aspects thereof. FIGS. 16B-E illustrates aspects ofsupporting the addition of new federated areas 2566 and/or new users offederated areas 2566, using examples of combinations of federated areas2566 based on the example hierarchical tree of federated areasintroduced in FIGS. 15B-C.

Turning to FIG. 16A, the control routine 2540 executed by processor(s)2550 of the one or more federated devices 2500 may include a portalcomponent 2549 to restrict access to the one or more federated areas2566 to only authorized users (e.g., authorized persons, entities and/ordevices), and may restrict the types of accesses made to only thefederated area(s) 2566 for which each user is authorized. However, inalternate embodiments, control of access to the one or more federatedareas 2566 may be provided by one or more other devices that may beinterposed between the one or more federated devices 2500 and thenetwork 2999, or that may be interposed between the one or morefederated devices 2500 and the one or more storage devices 2600 (ifpresent), or that may still otherwise cooperate with the one or morefederated devices 2500 to do so.

In executing the portal component 2549, the processor(s) 2550 of the oneor more federated devices 2500 may be caused to operate one or more ofthe network interfaces 2590 to provide a portal accessible by otherdevices via the network 2999 (e.g., the source devices 2100 and/or thereviewing devices 2800), and through which access may be granted to theone or more federated areas 2566. In some embodiments in which the oneor more federated devices 2500 additionally serve to control access tothe one or more federated areas 2566, the portal may be implementedemploying the hypertext transfer protocol over secure sockets layer(HTTPS) to provide a website securely accessible from other devices viathe network 2999. Such a website may include a webpage generated by theprocessor 2550 that requires the provision of a password and/or othersecurity credentials to gain access to the one or more federated areas2566. Such a website may be configured for interaction with otherdevices via an implementation of representational state transfer (RESTor RESTful) application programming interface (API). However, otherembodiments are possible in which the processor 2550 may provide aportal accessible via the network 2999 that is implemented in any of avariety of other ways using any of a variety of handshake mechanismsand/or protocols to selectively provide secure access to the one or morefederated areas 2566.

Regardless of the exact manner in which a portal may be implementedand/or what protocol(s) may be used, in determining whether to grant ordeny access to the one or more federated areas 2566 to another devicefrom which a request for access has been received, the processor(s) 2550of the one or more federated devices 2500 may be caused to refer toindications stored within portal data 2539 of users authorized to begranted access. Such indications may include indications of securitycredentials expected to be provided by such persons, entities and/ormachines. In some embodiments, such indications within the portal data2539 may be organized into accounts that are each associated with anentity with which particular persons and/or devices may be associated.The processor(s) 2550 may be caused to employ the portal data 2539 toevaluate security credentials received in association with a request foraccess to the at least one of the one or more federated areas 2566, andmay operate a network interface 2590 of one of the one or more federateddevices 2500 to transmit an indication of grant or denial of access tothe at least one requested federated area 2566 depending on whether theprocessor(s) 2550 determine that access is to be granted.

Beyond selective granting of access to the one or more federated areas2566 (in embodiments in which the one or more federated devices 2500control access thereto), the processor(s) 2550 may be further caused byexecution of the portal component 2549 to restrict the types of accessgranted, depending on the identity of the user to which access has beengranted. By way of example, the portal data 2539 may indicate thatdifferent users are each to be allowed to have different degrees ofcontrol over different aspects of one or more federated areas 2566. Auser may be granted a relatively high degree of control such that theyare able to create and/or remove one or more federated areas 2566, areable to specify which federated areas 2566 may be included in a set offederated areas, and/or are able to specify aspects of relationshipsamong one or more federated areas 2566 within a set of federated areas.Alternatively or additionally, a user may be granted a somewhat morelimited degree of control such that they are able to alter the accessrestrictions applied to one or more federated areas 2566 such that theymay be able to control which users have access each of such one or morefederated areas 2566. The processor(s) 2550 may be caused to storeindications of such changes concerning which users have access to whichfederated areas 2566 and/or the restrictions applied to such access aspart of the portal data 2539, where such indications may take the formof sets of correlations of authorized users to federated areas 2566and/or correlations of federated areas 2566 to authorized users.

Turning to FIG. 16B, as depicted, the processor(s) 2550 of the one ormore federated devices 2500 may be caused to instantiate and maintainboth a private federated area 2566 m and a base federated area 2566 x aspart of a set of related federated areas that form a linear hierarchy ofdegrees of access restriction therebetween. In some embodiments, thedepicted pair of federated areas 2566 m and 2566 x may have been causedto be generated by a user of the source device 2100 m having sufficientaccess permissions (as determined via the portal component 2549) as tobe able to create the private federated area 2566 m for private storageof one or more objects that are meant to be accessible by a relativelysmall number of users, and to create the related public federated area2566 x for storage of objects meant to be made more widely availablethrough the granting of access to the base federated area 2566 x to alarger number of users. Such access permissions may also include thegranted ability to specify what relationships may be put in placebetween the federated areas 2566 m and 2566 x, including and not limitedto, any inheritance, priority and/or dependency relationshipstherebetween. Such characteristics about each of the federated areas2566 m and 2566 x may be caused to be stored by the federated areacomponent 2546 as part of the federated area parameters 2536. Asdepicted, the federated area parameters 2536 may include a database ofinformation concerning each federated area 2566 that is instantiatedand/or maintained by the one or more federated devices 2500.

As an alternative to both of the federated areas 2566 m and 2566 xhaving been created and caused to be related to each other throughexpress requests by a user, in other embodiments, the processor(s) 2550of the one or more federated devices 2500 may be caused to automaticallycreate and configure the private federated area 2566 m in response to arequest to add a user associated with the source device 2100 m to theusers permitted to access the base federated area 2566 x. Morespecifically, a user of the depicted source device 2100 x that may haveaccess permissions to control various aspects of the base federated area2566 x may operate the source device 2100 x to transmit a request to theone or more federated devices 2500, via the portal provided thereby onthe network 2999, to grant a user associated with the source device 2100m access to use the base federated area 2566 x. In response, and inaddition to so granting the user of the source device 2100 m access tothe base federated area 2566 x, the processor(s) 2550 of the one or morefederated devices 2500 may automatically generate the private federatedarea 2566 m for private use by the user of the source device 2100 m.Such automatic operations may be triggered by an indication stored inthe federated area database within the federated area parameters 2536that each user that is newly granted access to the base federated area2566 x is to be so provided with their own private federated area 2566.This may be deemed desirable as an approach to making the base federatedarea 2566 x easier to use for each such user by providing individualprivate federate areas 2566 within which objects may be privately storedand/or developed in preparation for subsequent release into the basefederated area 2566 x. Such users may be able to store private sets ofvarious tools that each may use in such development efforts.

Turning to FIG. 16C, as depicted, the processor(s) 2550 of the one ormore federated devices 2500 may be caused to instantiate and maintainanother private federated area 2566 q to be part of the set of federatedareas 2566 m and 2566 x. In so doing, the private federated area 2566 qis added to the set in a manner that converts the linear hierarchy ofFIG. 16B into a hierarchical tree with a pair of branches. As with theinstantiation of the private federated area 2566 m in FIG. 16B, theinstantiation of the private federated area 2566 q in FIG. 16C may alsobe performed by the processor(s) 2550 of the one or more federateddevices 2500 as an automated response to the addition of a user of thedepicted source device 2100 q as authorized to access the base federatedarea 2566 x. Alternatively, a user with access permissions to controlaspects of the base federated area 2566 x may operate the source device2100 x to transmit a request to the portal generated by the one or morefederated devices 2500 to create the private federated area 2566 q, withinheritance, priority and/or dependency relationships with the basefederated area 2566 x, and with access that may be limited (at leastinitially) to the user of the source device 2100 q.

Turning to FIGS. 16D and 16E, as depicted, the processor(s) 2550 of theone or more federated devices 2500 may be caused to first, instantiatean intervening federated area 2566 u inserted between the privatefederated area 2566 q and the base federated area 2566 x, and theninstantiate another private federated area 2566 r that branches from thenewly created intervening federated area 2566 u. In so doing, the secondbranch that was created in FIG. 16C with the addition of the privatefederated area 2566 q is expanded into a larger branch that includesboth of the private federated areas 2566 q and 2566 r in separatesub-branches.

In various embodiments, the insertion of the intervening federated area2566 u may be initiated in a request transmitted to the portal fromeither the user of the source device 2100 q or the user of the sourcedevice 2100 x, depending on which user has sufficient access permissionsto be permitted to make such a change in the relationship between theprivate federated area 2566 q and the base federated area 2566 x,including the instantiation and insertion of the intervening federatedarea 2566 u therebetween. In some embodiments, it may be necessary forsuch a request made by one of such users to be approved by the otherbefore the processor(s) 2550 of the one or more federated devices 2500may proceed to act upon it.

Such a series of additions to a hierarchical tree may be prompted by anyof a variety of circumstances, including and not limited to, a desire tocreate an isolated group of private federated areas that are all withina single isolated branch that includes an intervening federated area bywhich users associated with each of the private federated areas withinsuch a group may be able to share objects without those objects beingmore widely shared outside the group as by being stored within the basefederated area 2566 x. Such a group of users may include a group ofcollaborating developers of task routines 2440, data sets 2330 and/orjob flow definitions 2220.

FIGS. 17A, 17B, 17C, 17D, 17E and 17F, together, illustrate the mannerin which an example job flow 2200 fgh may be configured by a job flowdefinition 2220 fgh. FIGS. 17A, 17B, 17C, 17D, 17E and 17F, together,also illustrate the manner in which an example performance 2700 afg 2 hof the example job flow 2200 fgh may be documented by an exampleinstance log 2720 afg 2 h. FIG. 17E additionally illustrates the mannerin which the job flow definition 2220 fgh may be generated as and/orfrom a DAG 2270 fgh. FIG. 17F additionally illustrates the manner inwhich the job flow 2200 fgh that employs non-neuromorphic processing toperform a function may be associated with another job flow 2200 jk thatemploys neuromorphic processing to perform the same function and thatwas derived from the job flow 2200 fgh. For sake of ease of discussionand understanding, the same example job flow 2200 fgh and exampleperformance 2700 afg 2 h of the example job flow 2200 fgh are depictedthroughout all of FIGS. 17A, 17B, 17C, 17D, 17E and 17F. Also, theexample job flow 2200 fgh and example performance 2700 afg 2 h thereofare deliberately relatively simple examples presented herein forpurposes of illustration, and should not be taken as limiting what isdescribed and claimed herein to such relatively simple embodiments.

As depicted, the example job flow 2200 fgh incorporates three tasks thatare to be performed in a relatively simple three-step linear orderthrough a single execution of a single task routine 2440 for each task,with none of those three tasks entailing the use of neuromorphicprocessing. Also, the example job flow 2200 fgh requires a single dataset as an input data object to the first task in the linear order, maygenerate and exchange a single data set between two of the tasks, andgenerates a result report as an output data object of the last task inthe linear order. As also depicted, in the example performance 2700 afg2 h of the example job flow 2200 fgh, task routines 2440 f, 2440 g 2 and2440 h are the three task routines selected to be executed to performthe three tasks. Also, a data set 2330 a is selected to serve as theinput data object, a data set 2370 fg may be generated and exchangedbetween performed tasks as a mechanism to exchange data therebetween,and a result report 2770 afg 2 h is the output data object to begenerated as an output of the performance 2700 afg 2 h. Again, it shouldbe noted that other embodiments of a job flow are possible in whichthere may be many more tasks to be performed, many more data objectsthat serve as inputs and/or many more data objects generated as outputs.It should also be noted that other embodiments of a job flow arepossible in which there is a much more complex order of the performanceof tasks that may include parallel and/or conditional branches that mayconverge and/or diverge.

Turning to FIGS. 17A and 17B, the job flow definition 2220 fgh for theexample job flow 2200 fgh may include a flow definition 2222 thatspecifies the three tasks to be performed, the order in which they areto be performed, and which of the three tasks is to accept a data objectas an input and/or generate a data object as an output. In specifyingthe three tasks to be performed, the flow definition 2222 may use flowtask identifiers 2241, such as the depicted flow task identifiers 2241f, 2241 g and 2241 h that uniquely identify each of the three tasks. Asdepicted, there may be a single task routine 2440 f that is able toperform the task specified with the flow task identifier 2241 f, andtherefore, the single task routine 2440 f may be the one task routinethat is assigned the flow task identifier 2241 f to provide anindication that it is able to perform the task. Also, there may be threetask routines 2440 g 1, 2440 g 2 and 2440 g 3 that are each able toperform the task specified with the flow task identifier 2241 g, andtherefore, each may be assigned the same flow task identifier 2241 g.Further, there may be a single task routine 2440 h that is able toperform the task specified with the flow task identifier 2241 h,resulting in the assignment of the flow task identifier 2241 h to thesingle task routine 2440 h.

As has been discussed, the job flow definition 2220 fgh specifies thetasks to be performed in a job flow, but does not specify any particulartask routine 2440 to be selected for execution to perform any particularone of those tasks during any particular performance of the job flow.Where there are multiple task routines 2440 that are capable ofperforming a particular task, a single one of those multiple taskroutines 2440 is selected for execution to do so, and the selection thatis made may depend on the nature of the request received to perform ajob flow. More specifically, the selection of a particular task routine2440 for execution to perform each particular task may be based on whichtask routine 2440 is the newest version to perform each task, and/or maybe based on which task routine 2440 was used in a previous performanceof each task in a specified previous performance of a job flow. As willbe explained in detail, the selection criteria that is used to select atask routine 2440 for each task may depend on whether an entirely newperformance of a job flow is requested or a repetition of an earlierperformance of a job flow is requested. As depicted, in the exampleperformance 2700 afg 2 h of the example job flow 2200 fgh, the taskroutine 2440 g 2 is selected from among the task routines 2440 g 1, 2440g 2 and 2440 g 3 for execution to perform the task identified with theflow task identifier 2241 g.

Alternatively or additionally, and as previously explained in connectionwith FIGS. 15A-B, in situations in which objects needed for theperformance of a job flow are distributed among multiple federated areasthat are related by inheritance and/or priority relationships, theselection of a particular task routine 2440 to perform a task from amongmultiple task routines 2440 that may each perform that same task may bedependent upon which federated area 2566 each of such multiple taskroutines 2440 are stored within. By way of example, FIG. 17C depicts anexample situation in which objects needed to perform the job flow 2200fgh are distributed among the federated areas 2566 m, 2566 u and 2566 xin the example hierarchical tree of federated areas introduced in FIGS.15B-C. More specifically, in this example, the data set 2330 a and thetask routine 2440 g 2 are stored within the private federated area 2566m; the task routine 2440 g 3 is stored within the intervening federatedarea 2566 u; and the data set 2330 b and the task routines 2440 f, 2440g 1 and 2440 h are stored within the base federated area 2566 x. Asdepicted, where the request to perform the job flow 2200 fgh is receivedfrom a user granted access to the private federated area 2566 m, as wellas to the base federated area 2566 x, but not granted access to any ofthe federated areas 2566 q, 2566 r or 2566 u, the search for objects touse in the requested performance may be limited to those stored withinthe private federated area 2566 m and the base federated area 2566 x.Stated differently, the perspective that may be automatically selectedfor use in determining which federated areas are searched for objectsmay be that of the private federated area 2566 m, since the privatefederated area 2566 m is the one federated area to which the user inthis example has been granted access to that is subject to the mostrestricted degree of access.

As a result, the task routine 2440 g 3 stored within the interveningfederated area 2566 u is entirely unavailable for use in the requestedperformance as a result of the user having no grant of access to theintervening federated area 2566 u, and this then becomes the reason whythe task routine 2440 g 3 is not selected. In contrast, as a result ofan inheritance relationship between the private federated area 2566 mand the base federated area 2566 x, the data set 2330 b and each of thetask routines 2440 f, 2440 g 1 and 2440 h stored in the based federatedarea 2566 x may each be as readily available for being used in therequested performance of the job flow 2200 fgh as the data set 2330 aand the task routine 2440 g 2 stored in the private federated area 2566m. Therefore, the task routines 2440 f and 2440 h may be selected as aresult of being the only task routines available within either federatedarea 2566 m or 2566 x that perform their respective tasks. However,although both of the data sets 2330 a and 2330 b may be equallyavailable through that same inheritance relationship, a priorityrelationship also in place between the federated areas 2566 m and 2566 xmay result in the data set 2330 a being selected as the input data set,since the data set 2330 a is stored within the private federated area2566 m, which is searched first for the objects needed for the requestedperformance, while the data set 2330 b is stored within the basefederated area 2566 x, which is searched after the search of the privatefederated area 2566 m. The same combination of inheritance and priorityrelationships in place between the federated areas 2566 m and 2566 x mayalso result in the task routine 2440 g 2 stored within the privatefederated area 2566 m being selected, instead of the task routine 2440 g1 stored within the base federated area 2566 x.

Turning to FIGS. 17A and 17D, the job flow definition 2220 fgh mayinclude interface definitions 2224 that specify aspects of taskinterfaces 2444 employed in communications among task the routines 2440that are selected for execution to perform the tasks of the example jobflow 2200 fgh (e.g., the task routines 2440 f, 2440 g 2 and 2440 h).Such aspects may include quantity, type, bit widths, protocols, etc., ofparameters passed from one task routine 2440 to another as part ofcommunications among task routines 2440 during their execution. As alsodepicted, the interface definitions 2224 may specify aspects of datainterfaces 2443 between task routines 2440 and any data objects that maybe employed as an input to a performance (e.g., the data set 2330 a)and/or that may be generated as an output of a performance (e.g., theresult report 2770 afg 2 h) of the example job flow 2200 fgh, such asthe data example performance 2700 afg 2 h. The interface definitions2224 may also specify aspects of data interfaces 2443 employed by onetask routine 2440 to generate a data object to convey a relatively largequantity of data to another task routine 2440 (e.g., the data set 2370fg depicted with dotted lines, and depicted as generated by task routine2440 f for use as an input to task routine 2440 g 2), and may specifyaspects of the data interface 2443 employed by the other task routine2440 to retrieve data from that same data object. Since many of thespecified aspects of the data interfaces 2443 may necessarily be closelyassociated with the manner in which data items are organized and madeaccessible within data objects, the interface definitions 2224 mayinclude organization definitions 2223 that specify such organizationaland access aspects of the data objects. Thus, as depicted in FIG. 17D,where each of the data sets 2330 a and 2370 fg (if any are present), andthe result report 2770 afg 2 h include a two-dimensional array, theorganization definitions 2223 may specify various aspects of the dataitems 2339 (e.g., data type, bit width, etc.), the rows 2333 and/or thecolumns 2334 for each these data objects.

As previously discussed, the job flow definition 2220 fgh specifiestasks to be performed and not the particular task routines 2440 to beselected for execution to perform those tasks, which provides theflexibility to select the particular task routines 2440 for each task atthe time a performance takes place. Similarly, the job flow definition2220 fgh also does not specify particular data objects to be used, whichprovides the flexibility to select the particular data objects withwhich the job flow is to be used at the time a performance takes place.However, the interface definitions 2224 do specify aspects of theinterfaces among the task routines 2440, and between the task routines2440 and data objects. The specification of aspects of the interfaces2443 and/or 2444 may be deemed desirable to ensure continuinginteroperability among task routines 2440, as well as between taskroutines 2440 and data objects, in each new performance of a job flow,even as new versions of one or more of the task routines 2440 and/or newdata objects are created for use in later performances.

In some embodiments, new versions of task routines 2440 may be requiredto implement the interfaces 2443 and/or 2444 in a manner that exactlymatches the specifications of those interfaces 2443 and/or 2444 within ajob flow definition 2220 fgh. However, in other embodiments, a limiteddegree of variation in the implementation of the interfaces 2443 and/or2444 by newer versions of task routines 2440 may be permitted as long as“backward compatibility” is maintained in retrieving input data objectsor generating output data objects through data interfaces 2443, and/orin communications with other task routines through task interfaces 2444.As will be explained in greater detail, the one or more federateddevices 2500 may employ the job flow definitions 2220 stored within oneor more federated areas 2566 to confirm that new versions of taskroutines 2440 correctly implement task interfaces 2444 and/or datainterfaces 2443. By way of example, in some embodiments, it may bedeemed permissible for an interface 2443 or 2444 that receivesinformation to be altered in a new version of a task routine 2440 toaccept additional information from a newer data object or a newerversion of another task routine 2440 if that additional information isprovided, but to not require the provision of that additionalinformation. Alternatively or additionally, by way of example, it may bedeemed permissible for an interface 2443 or 2444 that outputsinformation to be altered in a new version of task routine 2440 tooutput additional information as an additional data object generated asan output, or to output additional information to a newer version ofanother task routine 2440 in a manner that permits that additionalinformation to be ignored by an older version of that other task routine2440.

Turning to FIG. 17E, and as will be explained in greater detail, theinterface definitions 2224 within the job flow definition 2220 fgh may,in some embodiments, be derived as part of the generation of a DAG 2270fgh from comments and/or other portions of the programming code of thetask routines 2440 f, 2440 g 2 and 2440 h. More specifically, it may bethat the job flow definition 2220 fgh is at least partially generatedfrom a parsing of comments descriptive of the inputs and/or outputs ofone or more task routines 2440 that perform the functions of the jobflow 2200 fgh that the job flow definition 2220 fgh is to define. Insome embodiments, and as depicted, information concerning inputs toand/or outputs from each of the task routines 2440 f, 2440 g 2 and 2440h may be stored, at least temporarily, as macros 2470 f, 2470 g 2 and2470 h, respectively, although it should be noted that other forms ofintermediate data structure may be used in providing intermediatestorage of information concerning inputs and/or outputs. With all ofsuch data structures having been generated, the information within eachthat concerns inputs and/or outputs may then be used to generate the DAG2270 fgh to include the interface definitions 2224. And, as will beexplained in greater detail, from the interface definitions 2224, it maybe that at least a portion of the flow definition 2222 is able to bederived.

Returning to FIGS. 17A and 17B, an example instance log 2720 afg 2 hthat is generated as result a of the example performance 2700 afg 2 h ofthe example job flow 2200 fgh is depicted. Although the job flowdefinition 2220 fgh does not specify particular data objects or taskroutines 2440 to be used in performances of the example job flow 2200fgh, the example instance log 2720 afg 2 h does include such details, aswell as others, concerning the example performance 2700 afg 2 h. Thus,the example instance log 2720 afg 2 h includes the job flow identifier2221 fgh for the example job flow definition 2220 fgh; the task routineidentifiers 2441 f, 2441 g 2 and 2441 h for the particular task routines2440 f, 2440 g 2 and 2440 h, respectively, that were executed in theexample performance 2700 afg 2 h; the data object identifier 2331 a forthe data set 2330 a used as an input data object; and the result reportidentifier 2771 afg 2 h for the result report 2770 afg 2 h generatedduring the example performance 2700 afg 2 h. As has been discussed, theexample instance log 2720 afg 2 h is intended to serve as a record ofsufficient detail concerning the example performance 2700 afg 2 h as toenable all of the objects associated with the example performance 2700afg 2 h to be later identified, retrieved and used to repeat the exampleperformance 2700 afg 2 h. In contrast, the job flow definition 2220 fghis intended to remain relatively open-ended for use with a variety ofdata objects and/or with a set of task routines 2440 that may changeover time as improvements are made to the task routines 2440.

Turning for FIG. 17F, and as will be explained in greater detail, a newjob flow that employs neuromorphic processing (i.e., uses a neuralnetwork to implement a function) may be derived from an existing jobflow that does not employ neuromorphic processing (i.e., does not use aneural network, and instead, uses the execution of a series ofinstructions to perform the function). This may be done as an approachto creating a new job flow that is able to be performed much morequickly (e.g., by multiple orders of magnitude) than an existing jobflow by using a neural network in the new job flow to perform one ormore tasks much more quickly than may be possible through thenon-neuromorphic processing employed in the existing job flow. However,as those skilled in the art will readily recognize, such a neuralnetwork may need to be trained, and neuromorphic processing usuallyrequires the acceptance of some degree of inaccuracy that is usually notpresent in instruction-based processing in which each step in theperformance of a function is explicitly set forth with executableinstructions.

As will be explained in greater detail, such training of a neuralnetwork of such a new job flow may entail the use of a training data setthat may be assembled from data inputs and data outputs of one or moreperformances of an existing job flow. Such a training data set may thenbe used, through backpropagation and/or other neuromorphic trainingtechniques, to train the neural network. Further, following suchtraining, the degree of accuracy of the neural network in one or moreperformances of the new job flow may be tested by comparing data outputsof the existing and new job flows that are derived from identical datainputs provided to each. Presuming that the new job flow incorporatinguse of the neural network is deemed to be accurate enough to be put touse, there may still, at some later time, be an occasion where thefunctionality and/or accuracy of the new job flow and/or the neuralnetwork may be deemed to be in need of an evaluation. On such anoccasion, as an aid to ensuring accountability for the development ofthe new job flow and/or the neural network, it may be deemed desirableto provide an indication of what earlier job flow(s) and/or dataobject(s) were employed in training and/or in testing the new job flowand/or the neural network.

FIG. 17F provides a view of aspects of a example job flow 2200 jk thatemploys neuromorphic processing (i.e., employs a neural network), anexample job flow definition 2220 jk that defines the job flow 2200 jk,an example performance 2700 ajk of the job flow 2200 jk, and acorresponding example instance log 2720 ajk that documents theperformance 2700 ajk. This view is similar to the view provided by FIG.17A of aspects of the earlier discussed example job flow 2200 fgh thatdoes not employ neuromorphic processing (i.e., does not employ a neuralnetwork), the job flow definition 2220 fgh that defines the job flow2200 fgh, the example performance 2700 afg 2 h of the job flow 2200 fgh,and the example instance log 2720 afg 2 h that documents the performance2700 afg 2 h. As depicted in FIG. 17F, the job flow definition 2220 jkmay be defined to include a first task able to be performed by a taskroutine 2440 j that entails the use of neural configuration data 2371 j,and a second task able to be performed by a task routine 2440 k. As willbe explained in greater detail, the task performable by the task routine2440 j may be that of using the neural network configuration data 2371 jto instantiate a neural network (not specifically shown), and the taskperformable by the task routine 2440 k may be that of using that neuralnetwork to cause the job flow 2200 jk to perform the same function asthe job flow 2200 fgh.

As will be explained in greater detail, the neural network configurationdata 2371 j may define hyperparameters and/or trained parameters thatdefine the neural network employed in the job flow 2200 jk after it hasbeen trained. In some embodiments, the neural network configuration data2371 j may be deemed and/or handled for purposes of storage among one ormore federated areas 2566 as an integral part of the depicted exampletask routine 2440 j. In such embodiments, the executable code of thetask routine 2440 j may include some form of link (e.g., a pointer,identifier, etc.) that refers to the neural network configuration data2371 j as part of a mechanism to cause the retrieval and/or use of theneural network configuration data 2371 j alongside the task routine 2440j. Alternatively, in such embodiments, the task routine 2440 j maywholly integrate the neural network configuration data 2371 j as a formof directly embedded data structure.

However, in other embodiments, the neural network configuration data2371 j may be incorporated into and/or be otherwise treated as a dataset 2370 j that may be stored among multiple data sets 2330 and/or 2370within one or more federated areas 2566, including being subject to atleast a subset of the same rules controlling access thereto as areapplied to any other data set 2330 and/or 2370. In such otherembodiments, the same techniques normally employed in selecting and/orspecifying a data set 2330 or 2370 as an input to a task routine 2440 ina performance of a job flow 2200 may be used to specify the neuralnetwork configuration data 2371 j as the data set 2370 j serving as aninput to the task routine 2440 j. In this way, and as will be explainedin greater detail, the neural network defined by the configuration data2371 j may be given at least some degree of protection against deletion,may be made available for use in multiple different job flow flows(including other job flows that may perform further training of thatneural network that yield improved versions that may also be so stored),and/or may be documented within one or more instance logs as having beenemployed in one or more corresponding performances of job flows 2200.

As also depicted in FIG. 17F, the job flow definition 2220 jk of theexample job flow 2200 jk may include the job flow identifier 2221 fgh asa form of link to the job flow definition 2220 fgh that defines theexample job flow 2200 fgh. Such a link to the job flow definition 2220fgh may be provided in the job flow definition 2220 jk in a situationwhere one or more performances (i.e., the example performance 2700 afg 2h) of the job flow 2200 fgh were used in training and/or in testing theneural network of the job flow 2200 jk. Alternatively or additionally,the instance log 2720 ajk that documents aspects of the exampleperformance 2700 afk of the example job flow 2200 jk may include theinstance log identifier 2721 afg 2 h as a link to the instance log 2720afg 2 h that documents the example performance 2700 afg 2 h. Such a linkto the instance log 2720 afg 2 h may be provided in the instance log2720 ajk in a situation where the performance 2700 afg 2 h was used intraining and/or in testing the neural network of the job flow 2200 jk.Through the provision of such links, the fact that the job flow 2200 fghand/or the specific performance 2700 afg 2 h was used in training and/orin testing the neural network of the job flow 2200 jk may be readilyrevealed, if at a later date, the job flow definition 2220 jk and/or theinstance log 2720 ajk are retrieved and analyzed as part of a laterevaluation of the job flow 2200 jk. In this way, some degree ofaccountability for how the neural network of the job flow 2200 jk wastrained and/or tested may be ensured should such training and/or testingneed to be scrutinized.

FIGS. 18A, 18B, 18C, 18D and 18E, together, illustrate the manner inwhich the one or more federated devices 2500 selectively store andorganize objects within one or more federated areas 2566. FIG. 18Aillustrates aspects of selective storage of objects received from one ormore of the source devices 2100 within the one or more federated areas2566, and FIGS. 18B-E illustrates aspects of organization objects withinthe one or more federated areas 2566 in preparation for retrieval anduse in performances of job flows.

Turning to FIG. 18A, one of the source devices 2100 may be operated totransmit a request to one of the federated devices 2500 to store objectsassociated with a job flow within a federated area 2566. Again, theprocessor(s) 2550 of the one or more federated devices 2500 may becaused by the portal component 2549 to restrict access to the one ormore federated areas 2566 to only authorized users (e.g., authorizedpersons, entities and/or devices), and may restrict the types ofaccesses made to only those for which each user is authorized. Thecontrol routine 2540 may also include an admission component 2542 torestrict the objects that may be accepted for storage within a federatedarea 2566 to those that comply with one or more requirements.

Again, in executing the portal component 2549, the processor(s) 2550 ofthe one or more federated devices 2500 may be caused to operate one ormore of the network interfaces 2590 to provide a portal accessible byother devices via the network 2999, and through which access may begranted by the processor(s) 2550 to the one or more federated areas2566. Again, any of a variety of network and/or other protocols may beused. Again, in determining whether to grant or deny access to one ormore federated areas 2566 to another device from which a request foraccess has been received, the processor(s) 2550 may be caused to referto indications stored within portal data 2539 of users that areauthorized to be granted access.

Beyond selective granting of access to the one or more federated areas2566 (in embodiments in which the one or more federated devices 2500control access thereto), the processor(s) 2550 may be further caused byexecution of the portal component 2549 to restrict the types of accessgranted, depending on the identity of the user to which access has beengranted. By way of example, the portal data 2539 may indicate thatdifferent persons and/or different devices associated with a particularscholastic, governmental or business entity are each to be alloweddifferent degrees and/or different types of access. One such person ordevice may be granted access to retrieve objects from within a federatedarea 2566, but may not be granted access to alter or delete objects,while another particular person operating a particular device may begranted a greater degree of access that allows such actions. Inembodiments in which there is a per-object control of access, the one ormore federated devices 2500 (or the one or more other devices thatseparately control access) may cooperate with the one or more storagedevices 2600 (if present) to effect such per-object access control.

It should be noted that the granting of access to a federated area 2566to store one or more objects may lead to a parallel transfer of portionsof one or more of the objects via the network 2999 from and/or to a gridof devices. This may be deemed desirable for the transfer of largerobjects, such as data objects (e.g., a data set 2330) that may be quitelarge in size. More precisely, in embodiments in which the source device2100 that transmitted the request for access to store objects isoperated as part of a grid of the source devices 2100, the granting ofaccess to store objects in a federated area 2566 may result in multipleones of source devices 2100 transmitting one or more of the objects toone or more of the federated devices 2500 as multiple portions in atleast partially parallel transfers. Correspondingly, in embodiments inwhich the federated device 2500 that received the request is operated aspart of a federated device grid 2005, multiple ones of the federateddevices 2500 may receive one or more of the transmitted objects asportions and at least partially in parallel.

In executing the admission component 2542, the processor(s) 2550 of theone or more federated devices 2500 may be caused to impose variousrestrictions on what objects may be stored within a federated area 2566,presuming that the processor(s) 2550 have been caused by the portalcomponent 2549 to grant access in response to the received request tostore objects. Some of such restrictions may be based on dependenciesbetween objects and may advantageously automate the prevention ofsituations in which one object stored in a federated area 2566 isrendered nonfunctional as a result of another object having not beenstored within the same federated area 2566 or within a federated area2566 that is related through an inheritance relationship such that it isunavailable.

By way of example, and as previously explained, such objects as job flowdefinitions 2220 include references to tasks to be performed. In someembodiments, it may be deemed desirable to prevent a situation in whichthere is a job flow definition 2220 stored within a federated area 2566that describes a job flow that cannot be performed as a result of therebeing no task routines 2440 stored within the same federated area 2566and/or within a related federated area 2566 that are able to perform oneor more of the tasks specified in the job flow definition 2220. Thus,where a request is received to store a job flow definition 2220, theprocessor(s) 2550 may be caused by the admission component 2542 to firstdetermine whether there is at least one task routine 2440 stored withinthe same federated area 2566 and/or within a related federated area 2566to perform each task specified in the job flow definition. If thereisn't, then the processor(s) 2550 may be caused by the admissioncomponent 2542 to disallow storage of that job flow definition 2220within that federated area 2566, at least until such missing taskroutine(s) 2440 have been stored therein and/or within a relatedfederated area 2566 from which they would be accessible through aninheritance relationship. In so doing, and as an approach to improvingease of use, the processor(s) 2550 may be caused to transmit anindication of the reason for the refusal to inform an operator of thesource device 2100 of what can be done to remedy the situation.

Also by way of example, and as previously explained, such objects asinstance logs 2720 include references to such other objects as a jobflow definition, task routines executed to perform tasks, and dataobjects employed as inputs and/or generated as outputs. In someembodiments, it may also be deemed desirable to avoid a situation inwhich there is an instance log 2720 stored within a federated area 2566that describes a performance of a job flow that cannot be repeated as aresult of the job flow definition 2220, one of the task routines 2440,or one of the data objects referred to in the instance log 2720 notbeing stored within the same federated area 2566 and/or within a relatedfederated area 2566 from which they would also be accessible. Such asituation may entirely prevent a review of a performance of a job flow.Thus, where a request is received to store an instance log 2720, theprocessor(s) 2550 of the one or more federated devices 2500 may becaused by the admission component 2542 to first determine whether all ofthe objects referred to in the instance log 2720 are stored within thesame federated area 2566 and/or a related federated area 2566 in whichthey would also be accessible, thereby enabling a repeat performanceusing all of the objects referred to in the instance log 2720. If thereisn't then the processor(s) 2550 may be caused by the admissioncomponent 2542 to disallow storage of that instance log 2720 within thatfederated area 2566, at least until such missing object(s) have beenstored therein and/or within a related federated area 2566. Again, as anapproach to improving ease of use, the processor(s) 2550 may be causedto transmit an indication of the reason for the refusal to inform anoperator of the source device 2100 of what can be done to remedy thesituation, including identifying the missing objects.

Additionally by way of example, and as previously explained, suchobjects as job flow definitions 2220 may specify various aspects ofinterfaces among task routines, and/or between task routines and dataobjects. In some embodiments, it may be deemed desirable to prevent asituation in which the specification in a job flow definition 2220 of aninterface for any task routine that may be selected to perform aspecific task does not match the manner in which that interface isimplemented in a task routine 2440 that may be selected for execution toperform that task. Thus, where a request is received to store acombination of objects that includes both a job flow definition 2220 andone or more associated task routines 2440, the processor(s) 2550 may becaused to compare the specifications of interfaces within the job flowdefinition 2220 to the implementations of those interfaces within theassociated task routines 2440 to determine whether they sufficientlymatch. Alternatively or additionally, the processor(s) 2550 may becaused to perform such comparisons between the job flow definition 2220that is requested to be stored and one or more task routines 2440already stored within one or more federated areas 2566, and/or toperform such comparisons between each of the task routines 2440 that arerequested to be stored and one or more job flow definitions 2220 alreadystored within one or more federated areas 2566. If the processor(s) 2550determine that there is an insufficient match, then the processor(s)2550 may be caused to disallow storage of the job flow definition 2220and/or of the one or more associated task routines 2440. In so doing,and as an approach to improving ease of use, the processor(s) 2550 maybe caused to transmit an indication of the reason for the refusal toinform an operator of the source device 2100 of what can be done toremedy the situation, including providing details of the insufficiencyof the match.

As previously discussed, macros 2470 and DAGs 2270 may be generated frominformation concerning the inputs and/or outputs of one or more taskroutines 2440 such that, like a job flow definition 2200 and/or aninstance log 2720, each macro 2470 and each DAG 2270 is associated withone or more task routines 2440. As a result of such associations, it maybe deemed desirable to ensure that further analysis of the informationwithin each macro 2470 and/or DAG 2270 is enabled by requiring that theone or more task routines 2440 from which each is derived be availablewithin a federated area 2566 to be accessed. More specifically, inexecuting the admission component 2542, the processor(s) 2550 of the oneor more federated devices 2500 may be caused to impose restrictions onthe storage of macros 2470 and/or DAGs 2270 that may be similar to thosejust discussed for the storage of job flow definitions 2200 and/orinstance logs 2720. Thus, in response to a request to store one or moremacros 2470 and/or one or more DAGs 2270, the processor(s) 2550 mayfirst be caused to determine whether the task routine(s) 2440 on whichthe information concerning inputs and/or outputs within each macro 2470and/or within each DAG 2270 may be based is stored within a federatedarea 2566 or is provided for storage along with each 2470 and/or eachDAG 2270 for storage. Storage of a macro 2470 or of a DAG 2270 may berefused if such associated task routine(s) 2440 are not already sostored and are also not provided along with the macro 2470 or DAG 2270that is requested to be stored.

Turning to FIG. 18B, as depicted, the control routine 2540 executed byprocessor(s) 2550 of the one or more federated devices 2500 may includean identifier component 2541 to assign identifiers to objects within theone or more federated areas 2566. As previously discussed, each instancelog 2720 may refer to objects associated with a performance of a jobflow (e.g., a job flow definition 2220, task routines 2440, and/or dataobjects used as inputs and/or generated as outputs, such as the datasets 2330 and/or 2370, and/or a result report 2770) by identifiersassigned to each. Also, as will shortly be explained, the assignedidentifiers may be employed as part of an indexing system in one or moredata structures and/or databases to more efficiently retrieve suchobjects. In some embodiments, the processor(s) 2550 of the one or morefederated devices 2500 may be caused by the identifier component 2541 toassign identifiers to objects as they area received via the network 2999from other devices, such as the one or more source devices 2100. Inother embodiments, the processor(s) 2550 may be caused by the identifiercomponent 2541 to assign identifiers to objects generated as a result ofa performance of a job flow (e.g., a result report 2770 generated as anoutput data object).

In some embodiments, each identifier may be generated by taking a hashof at least a portion of its associated object to generate a hash valuethat becomes the identifier. More specifically, a job flow identifier2221 may be generated by taking a hash of at least a portion of thecorresponding job flow definition 2220; a data object identifier 2331may be generated by taking a hash of at least a portion of thecorresponding data set 2330 or 2370; a task routine identifier 2441 maybe generated by taking a hash of at least a portion of the correspondingtask routine 2440; and/or a result report identifier 2771 may begenerated by taking a hash of at least a portion of the correspondingresult report 2770. Any of a variety of hash algorithms familiar tothose skilled in the art may be employed. Such an approach to generatingidentifiers may be deemed desirable as it may provide a relativelysimple mechanism to generate identifiers that are highly likely to beunique to each object, presuming that a large enough portion of eachobject is used as the basis for each hash taken and/or each of theidentifiers is of a large enough bit width. In some embodiments, thesize of the portions of each of these different objects of which a hashis taken may be identical. Alternatively or additionally, the bit widthsof the resulting hash values that become the identifiers 2221, 2331,2441 and 2771 may be identical.

Such an approach to generating identifiers may advantageously be easilyimplemented by devices other than the one or more federated devices 2500to reliably generate identifiers for objects that are identical to theidentifiers generated by the processor(s) 2550 of any of the one or morefederated devices 2500. Thus, if a job flow is performed by anotherdevice, the instance log 2720 generated by the other device would useidentifiers to refer to the objects associated with that performancethat would be identical to the identifiers that would have beengenerated by the processor(s) 2550 of the one or more federated devices2500 to refer to those same objects. As a result, such an instance log2720 could be received by the one or more federated devices 2500 andstored within a federated area 2566 without the need to derive newidentifiers to replace those already included within that instance log2720 to refer to objects associated with a performance of a job flow.

Referring to FIG. 18A in addition to FIG. 18B, in some embodiments, theidentifier component 2541 may cooperate with the admission component2542 in causing the processor(s) 2550 of the one or more federateddevices 2500 to analyze received objects to determine compliance withvarious restrictions as part of determining whether to allow thoseobjects to be stored within the one or more federated areas 2566. Morespecifically, and by way of example, the identifier component 2541 maygenerate identifiers for each received object. The provision ofidentifiers for each received object may enable the admission component2542 to cause the processor(s) 2550 to check whether the objectsspecified in a received instance log 2720 are available among the otherobjects received along with the received instance log 2720, as well aswhether the objects specified in the received instance log 2720 areavailable as already stored within one or more of the federated areas2566. If an object referred to in the received instance log 2720 isneither among the other received objects or among the objects alreadystored within one or more of the federated area 2566, then theprocessor(s) 2550 may be caused by the admission component 2542 todisallow storage of the received instance log 2720 within the one ormore federated areas 2566. As previously discussed, disallowing thestorage of an instance log 2720 for such reasons may be deemed desirableto prevent storage of an instance log 2720 that describes a performanceof a job flow that cannot be repeated due to one or more of the objectsassociated with that performance being missing.

Turning to FIG. 18C, in some embodiments, the generation of identifiersfor instance logs 2720 may differ from the generation of identifiers forother objects. More specifically, while the identifiers 2221, 2331, 2441and 2771 may each be derived by taking a hash of at least a portion ofits corresponding object, an instance log identifier 2721 for aninstance log 2720 may be derived from at least a portion of each of theidentifiers for the objects that are associated with the performancethat corresponds to that instance log 2720. Thus, as depicted, theprocessor(s) 2550 of the one or more federated devices 2500 may becaused by the identifier component 2541 to generate an instance logidentifier 2721 for a performance of a job flow by concatenating atleast a portion of each of a job flow identifier 2221, one or more dataobject identifiers 2331, one or more task routine identifiers 2441, anda result report identifier 2771 for a job flow definition 2220, one ormore data sets 2330 and/or 2370, one or more task routines 2440, and aresult report 2770, respectively, that are all associated with thatperformance of that job flow. In embodiments in which the bit widths ofeach of the identifiers 2221, 2331, 2441 and 2771 are identical, logidentifiers 2721 may be formed from identically sized portions of eachof such identifiers 2221, 2331, 2441 and 2771, regardless of thequantity of each of the identifiers 2221, 2331, 2441 and 2771 used. Suchuse of identically sized portions of such identifiers 2221, 2331, 2441and 2771 may be deemed desirable to aid in limiting the overall bitwidths of the resulting log identifiers 2721.

FIG. 18D illustrates such a concatenation of identifiers in greaterdetail using identifiers of objects associated with the example job flow2200 fgh and the example performance 2700 afg 2 h earlier discussed inconnection with FIGS. 17A-E. As depicted, after having generated a jobflow identifier 2221 fgh, a data set identifier 2331 a, a task routineidentifier 2441 f, a task routine identifier 2441 g 2, a task routineidentifier 2441 h and a result report identifier 2771 afg 2 h for theexample job flow definition 2220 fgh, the data set 2330 a, the taskroutine 2440 f, the task routine 2440 g 2, the task routine 2440 h andthe result report 2770 afg 2 h, respectively, the processor(s) 2550 maybe caused by the identifier component 2541 to concatenate at least anidentically sized portion of each of these identifiers together to formthe single instance log identifier 2721 afg 2 h for the example instancelog 2720 afg 2 h of FIGS. 17A-E.

Turning to FIG. 18E, as depicted, the control routine 2540 executed bythe processor(s) 2550 of the one or more federated devices 2500 mayinclude a database component 2545 to organize various ones of theobjects 2220, 2270, 2330, 2370, 2440, 2470, 2720 and 2770 into one ormore databases (or one or more other data structures of other varieties)for more efficient storage and retrieval thereof within each federatedarea 2566 of the one or more federated areas 2566. In some embodiments,such organization of objects may be performed within the storages 2560of multiple ones of the federated devices 2500, which may be operatedtogether as the federated device grid 2005. In other embodiments, suchorganization of objects may be performed within multiple ones of thestorage devices 2600, which may be operated together as the storagedevice grid 2006. In different embodiments, either of the grids 2005 or2006 may be employed to provide distributed storage space acrossmultiple ones of the devices 2500 or 2600, respectively, for the one ormore federated areas 2566.

As depicted, the processor(s) 2550 may be caused by the databasecomponent 2545 to generate and/or maintain a distinct job flow database2562 of the job flow definitions 2220 within each federated area 2566.Within each job flow database 2562, the job flow definitions 2220 may beindexed or made otherwise addressable by their corresponding job flowidentifiers 2221. The processor(s) 2550 may also be caused to generateand/or maintain a distinct data object database 2563 of the data sets2330 and/or 2370, and/or for the result reports 2770 within eachfederated area 2566. Within each data object database 2563, each of thedata sets 2330 and/or 2370 may be accessible via their correspondingdata object identifiers 2331, and/or each of the result reports 2770 maybe accessible via their corresponding result report identifiers 2771.

As also depicted, the processor(s) 2550 may be caused by the databasecomponent 2545 to generate and/or maintain a distinct task routinedatabase 2564 of the task routines 2440 within each federated area 2566.Within each task routine database 2564, the task routines 2440 may beindexed or made otherwise addressable both by their corresponding taskroutine identifiers 2441, and by the flow task identifiers 2241 thateach may also be assigned to indicate the particular task that each isable to perform. As has been discussed, there may be tasks that multipletask routines 2440 are able to perform such that there may be sets ofmultiple task routines 2440 that all share the same flow task identifier2241. In some embodiments, a search of a task routine database 2564using a flow task identifier 2241 to find a task routine 2440 that isable to perform the task identified by that flow task identifier 2241may beget an indication from the task routine database 2564 of therebeing more than one of such task routines 2440, such as a list of thetask routine identifiers 2441 of such task routines 2440. Such anindication may also include an indication of which of the multiple taskroutines 2440 so identified is the most recent version thereof. Such anindication may be provided by an ordering of the task routineidentifiers 2441 of the multiple task routines 2440 that places the taskroutine identifier 2441 of the most recent version of the task routines2440 at a particular position within the list. In this way, indicationsof whether one, or more than one, task routines 2440 exist that are ableto perform a task, as well as which one of multiple task routines 2440is the newest version may be quickly provided by a task routine database2564 in a manner that obviates the need to access and/or analyze any ofthe task routines 2440 therefrom.

As further depicted, the processor(s) 2550 may be caused by the databasecomponent 2545 to generate and/or maintain a distinct instance logdatabase 2567 of the instance logs 2720 within each federated area 2566.Within each instance log database 2567, the instance logs 2720 may beindexed or made otherwise addressable by their corresponding instancelog identifiers 2721. As has been discussed, each performance of a jobflow may cause the generation of a separate corresponding instance log2720 during that performance that provides a log of events occurringduring the performance, including and not limited to, each performanceof a task. In such embodiments, each instance log 2720 may beimplemented as a separate data structure and/or file to provideindications of events occurring during the performance to which itcorresponds. However, other embodiments are possible in which each ofthe instance logs 2720 is implemented as an entry of a larger log datastructure and/or larger log data file, such as the instance log database2567. In some embodiments, the manner in which the instance logidentifiers 2721 of the instance logs 2720 are stored within an instancelog database 2567 (or other data structure) may be structured to alloweach of the instance log identifiers 2721 to be searched for at leastportions of particular identifiers for other objects that wereconcatenated to form one or more of the instance log identifiers 2721.As will shortly be explained in greater detail, enabling such searchesto be performed of the instance log identifiers 2721 may advantageouslyallow an instance log 2720 for a particular performance of a particularjob flow to be identified in a manner that obviates the need to accessand/or analyze any of the instance logs 2720 within an instance logdatabase 2567.

As additionally depicted in FIG. 18E, the processor(s) 2250 may beadditionally caused by the database component 2545 to store macros 2470within task routine database(s) 2564 alongside the task routines 2440from which each macro 2470 may be derived. As will be explained ingreater detail, it may be deemed desirable to enable each macro 2470 tobe searchable based on either the task routine identifier 2441 of thespecific task routine 2440 from which it was generated, or the flow taskidentifier 2241 of the task that the task routine 2440 performs. As alsoadditionally depicted in FIG. 18E, the processor(s0 2250 may beadditionally caused by the database component 2545 to store DAGs 2270within job flow database(s) 2562 alongside the job flow definitions2220. As has been discussed, new job flow definitions 2220 may be atleast partially based on DAGs 2270.

As depicted in FIG. 18E, within each federated area 2566, objects may beorganized in object databases depicted in FIG. 18E in which objectidentifiers may be used to assist in more efficiently storing objects,to more efficiently identify what objects are within each databaseand/or to more efficiently retrieve objects therefrom. However, amongfederated areas 2566 that are part of a set of related federated areas(e.g., a linear hierarchy or hierarchical tree of federated areas), itmay be deemed advantageous to maintain a separate index system of theobject identifiers for use in locating objects that may be stored withinany one of the federated areas 2566 within the set.

Each of FIGS. 19A and 19B illustrates an example embodiment of an indexsystem that covers multiple federated areas within such a set of relatedfederated areas. FIG. 19A depicts aspects of a single global index thatcovers all federated areas 2566 within the example hierarchical treeearlier introduced in FIGS. 15B-C, and FIG. 19B depicts aspects ofmultiple side-by-side indexes for each private federated area 2566within the same example hierarchical tree.

Turning to FIG. 19A, a single global index of job flow identifiers 2221,data object identifiers 2331, task routine identifiers 2441, resultreport identifiers 2771 and instance log identifiers 2721 may bemaintained by the one or more federated devices 2500 for use inidentifying all the corresponding types of objects present within thefederated areas 2566 m, 2566 q, 2566 r, 2566 u and 2566 x of thedepicted example hierarchical tree. Additionally, as was depicted withinFIGS. 18B and 18C, each of these identifiers may be paired and/or storedtogether with a corresponding one of multiple job flow locationidentifiers 2222, data object location identifiers 2332, task routinelocation identifiers 2442, result report location identifiers 2772 andinstance log location identifiers 2722 that each specify which one ofthe federated areas 2566 m, 2566 q, 2566 r, 2566 u and 2566 x is thefederated area in which each corresponding object is stored. Stillfurther, each of the task routine identifiers 2441 may be correlated toa flow task identifier 2241 that identifies the task performed by eachtask routine 2440 in a manner similar to what was discussed in referenceto FIG. 18E.

With such a single global index of identifiers and correlated locationidentifiers maintained for such a hierarchical set of federated areas2566, a search for an object thereamong may start with searching such aglobal index to determine whether the object is stored within any of thefederated areas 2566, and if so, to identify which federated area 2566in which it is so stored. The search may then proceed to searchingwithin the appropriate one of the databases 2562, 2563, 2564 or 2567(depicted in FIG. 18E) within that federated area 2566 to retrieve thatobject. It should be noted that, in performing searches for objectsamong one or more federated areas 2566 in response to a request made bya particular user (and received by the one or more federated devices2500), the scope of the search may be limited to cover only the one ormore federated areas to which the requesting user has been grantedaccess. This may be done in recognition of the inherent pointlessness ofsearching for objects that are not permitted to be made accessible tothe requesting user.

Turning to FIG. 19B, in an alternate configuration of an index system, aseparate index of similar content and/or structure may be generated andmaintained for all federated areas along each pathway between the basefederated area 2566 x and one of the private federated areas 2566 m,2566 q and 2566 r. Such dividing up of such an index system may bedeemed desirable where it is deemed likely that the majority of searchesfor objects will be limited to a single selected one of such pathways aspart of implementing inheritance and/or priority relationships among thefederated devices 2566 within each of those pathways. Alternatively oradditionally, such dividing up of such an index system may be deemeddesirable in recognition of a likelihood that each user may be grantedaccess to only one private federated area 2566 such that a search forobjects prompted by a request received from a user may, as discussedabove, be limited to the federated areas to which the requesting userhas been granted access. Thus, it may be deemed at least highly unlikelythat any search performed in response to such a request would everencompass more than one private federated area.

FIGS. 20A and 20B, together, illustrate the manner in which theprocessor(s) 2550 of the one or more federated devices 2500 selectivelylocate and retrieve objects from federated area(s) 2566 for transmissionto another device and/or for use in directly performing a job flow. FIG.20A illustrates aspects of selective retrieval of objects from one ormore federated areas 2566 in response to requests received from one ormore of the reviewing devices 2800, and FIG. 20B illustrates aspects ofthe use of identifiers assigned to objects to locate objects within oneor more federated areas 2566 and/or to identify object associations.

Turning to FIG. 20A, one of the reviewing devices 2800 may be operatedto transmit a request to the one or more federated devices 2500 toretrieve one or more objects associated with a job flow from within oneor more federated areas 2566. Alternatively the request may be to useone or more objects associated with a job flow to perform the job flowto provide results of an analysis for viewing or other uses at thereviewing device 2800, or to repeat a previous performance of a job flowfor purposes of reviewing aspects of that previous performance. In someembodiments, the processor(s) 2550 may be caused to queue such requestsas request data 2535 to enable out-of-order handling of requests, and/orother approaches to increase the efficiency with which requests areresponded to. As previously discussed in connection with at least FIG.18A, the processor(s) 2550 of the one or more federated devices 2500that receive the request may be caused by execution of the portalcomponent 2549 to restrict access to the one or more federated areas2566 for any of such requests to only authorized users, and may restrictthe types of requests that may be granted to only those for which eachuser is authorized based on indications of such authorized users and/ortypes of granted access within the portal data 2539. Also, as depicted,the control routine 2540 may also include a selection component 2543 toemploy one or more identifiers provided in a request and/or one or morerules to locate, select and retrieve objects associated with a job flowfrom the one or more federated areas 2566. The control routine 2540 mayfurther include a performance component 2544 to perform a job flow or torepeat a previous performance of a job flow based on objects that theprocessor(s) 2550 are caused to retrieve from the one or more federatedareas 2566 by the selection component 2543.

It should be noted that the granting of access to the one or morefederated areas 2566 to retrieve one or more objects for transmission toa reviewing device 2800, and/or to transmit to a reviewing device 2800one or more objects generated during a performance of a job flow by theone or more federated devices 2500, may lead to a parallel transfer ofportions of one or more objects via the network 2999 from and/or to agrid of devices. This may be deemed desirable for the transfer of largerobjects, such as result reports 2770 that include data set(s) that maybe quite large in size. More precisely, in embodiments in which thereviewing device 2800 that transmitted a request that includes beingprovided with one or more objects is operated as part of a group or gridof multiple ones of the reviewing devices 2800, the granting of therequest may result in multiple ones of the reviewing devices 2800receiving one or more objects as multiple portions in at least partiallyparallel transfers. Correspondingly, in embodiments in which thefederated device 2500 that received the request is operated as part of afederated device grid 2005, multiple ones of the federated devices 2500may transmit one or more objects as portions and at least partially inparallel.

In executing the selection component 2543, the processor(s) 2550 may becaused to use one or more identifiers of objects that may be provided ina granted request to directly retrieve those one or more objects fromone or more federated areas 2566. By way of example, a request may bereceived for the retrieval and transmission to the requesting device ofa particular data set 2330, and the request may include the data objectidentifier 2331 of the particular data set 2330. In response to therequest, the processor(s) 2550 may be caused by the selection component2543 to employ the provided data object identifier 2331 (and maybe to doso along with one or more correlated data object location identifiers2332, as previously discussed in reference to FIGS. 18A-E and/or 19A-B)to search for the particular data set 2330 within one or more federatedareas 2566, to then retrieve the particular data set 2330 from thefederated area 2566 in which it is found, and to transmit it to therequesting device 2800.

However, other requests may be for the retrieval of objects from one ormore federated areas 2566 where the identifiers of the requested objectsmay not be provided within the requests. Instead, such requests mayemploy other identifiers that provide an indirect reference to therequested objects.

In one example use of an indirect reference to objects, a request may bereceived for the retrieval and transmission to a reviewing device 2800of a task routine that performs a particular task, and the request mayinclude the flow task identifier 2241 of the particular task instead ofany task routine identifier 2441 for any particular task routine 2440.The processor(s) 2550 may be caused by the selection component 2543 toemploy the flow task identifier 2241 provided in the request to searchwithin one or more federated areas 2566 for such task routines 2440. Ashas been previously discussed, the search may entail correlating theflow task identifiers 2241 to one or more task routine identifiers 2441of the corresponding one or more task routines 2440 that may perform thetask identified by the flow task identifier 2241. In embodiments inwhich the task routines 2440 have been organized into a task routinedatabase 2564 within each federated area 2566 as depicted as an examplein FIG. 18E (or other searchable data structure), the search may entailsearches within such a database or other data structure within eachfederated area 2566 in which such a task routine 2440 is identified asstored. The result of such a search may be an indication from such adatabase or other data structure within one or more of such federatedareas 2566 that there is more than one task routine 2440 that is able toperform the task identified by the flow task identifier 2241 provided inthe request. As previously discussed, such an indication may be in theform of a list of the task routine identifiers 2441 for the taskroutines 2440 that are able to perform the specified task. Additionally,and as also previously discussed, such a list may be ordered to providean indication of which of those task routines 2440 stored within afederated area 2566 is the newest. Again, it may be deemed desirable tofavor the use of the newest version of a task routine 2440 that performsa particular task where there is more than one task routine 2440 storedwithin one or more federated areas 2566 that is able to do so. Thus, theprocessor 2550 may be caused by the selection component 2543 to impose arequirement that, unless there is to be a repetition of a previousperformance in which particular task routines 2440 were used, newestversions of task routines 2440 to perform each task are to be selectedby default. Therefore, in response to the request, the processor(s) 2550may be caused to select the newest task routine 2440 indicated among allof the one or more of such lists retrieved within each of one or morefederated areas 2566 to perform the task specified in the request by theflow task identifier 2241, and to transmit that newest version to therequesting device. Through such automatic selection and retrieval of thenewest versions of task routines 2440, individuals and/or entities thatmay be developing new analyses may be encouraged to use the newestversions.

In another example use of an indirect reference to objects, a requestmay be received by the one or more federated devices 2500 to repeat aprevious performance of a specified job flow with one or more specifieddata objects as inputs (e.g., one or more of the data sets 2330), or toprovide the requesting device with the objects needed to repeat theprevious performance of the job flow, itself. Thus, the request mayinclude the job flow identifier 2221 of the job flow definition 2220 forthe job flow, and may include one or more data object identifiers 2331of the one or more data sets 2330 to be employed as inputs to theprevious performance of that job flow sought to be repeated, but may notinclude identifiers for any other object associated with that previousperformance.

The processor(s) 2550 may be caused by the selection component 2543 toemploy the job flow identifier 2221 and the one or more data objectsidentifiers 2331 provided in the request to search one or more federatedareas 2566 for all instance logs 2720 that provide an indication of apast performance of the specified job flow with the specified one ormore input data objects. In embodiments in which the instance logs 2720have been organized into an instance log database 2567 as depicted as anexample in FIG. 18E (or other searchable data structure), the search maybe within such a database or other data structure, and may be limited tothe instance log identifiers 2721. More specifically, in embodiments inwhich the instance log identifiers 2721 were each generated byconcatenating the identifiers of objects associated with a correspondingprevious performance, the instance log identifiers 2721, themselves, maybe analyzed to determine whether the identifiers provided in the requestfor particular objects are included within any of the instance logidentifiers 2721. Thus, the processor(s) 2550 may be caused to searcheach instance log identifier 2721 to determine whether there are anyinstance log identifiers 2721 that include the job flow identifier 2221and all of the data object identifiers 2331 provided in the request. Ifsuch an instance log identifier 2721 is found, then it is an indicationthat the instance log 2720 that was assigned that instance logidentifier 2721 is associated with a previous performance of that jobflow associated with the one or more data sets 2330 specified in therequest.

It should be noted, however, that a situation may arise in which morethan one of such instance log identifiers 2721 may be found, indicatingthat there has been more than one past performance of the job flow withthe one or more data sets. In response to such a situation, theprocessor(s) 2550 may be caused to transmit an indication of themultiple previous performances to the requesting device along with arequest for a selection to be made from among those previousperformances. The processor(s) 2550 may then await a response from therequesting device that provides an indication of a selection from amongthe multiple previous performances. As an alternative to such anexchange with the requesting device, or in response to a predeterminedperiod of time having elapsed since requesting a selection without anindication of a selection having been received by the one or morefederated devices 2500, the processor(s) 2550 may be caused by theselection component 2543 to, as a default, select the most recent one ofthe previous performances.

After the finding of a single previous performance, or after theselection of one of multiple previous performances, the processor(s)2550 may then be caused by the selection component 2543 to retrieve thetask routine identifiers 2441 specified within the correspondinginstance log 2720 of the particular task routines 2440 used in theprevious performance. The processor(s) 2550 may then employ those taskroutine identifiers 2441 to retrieve the particular task routines 2440associated with the previous performance from one or more federatedareas 2566. The processor(s) 2550 may also be caused to retrieve theresult report identifier 2771 specified within the instance log 2720 ofthe result report that was generated in the previous performance. Theprocessor(s) 2550 may be further caused to retrieve any data objectidentifiers 2331 that may be present within the instance log 2720 thatspecify one or more data sets 2370 that may have been generated as amechanism to exchange data between task routines 2440 during theperformance of a job flow.

If the request was for the provision of objects to the requestingdevice, then the processor(s) 2550 may be caused by the selectioncomponent 2543 to transmit, to the requesting device, the job flowdefinition 2220 and the one or more data sets 2330 specified by the jobflow identifier 2221 and the one or more data object identifiers 2331,respectively, in the request. The processor 2550 may also be caused totransmit the instance log 2720 generated in the previous performance,and the result report 2770 specified by the result report identifier2771 retrieved from the instance log 2720. If any data sets 2370 wereindicated in the instance log 2720 as having been generated in theprevious performance, then the processor(s) 2550 may be further causedto transmit such data set(s) 2370 to the requesting device. Thus, basedon a request that provided only identifiers for a job flow definition2220 and one or more data objects used as inputs to a previousperformance of the job flow, a full set of objects may be automaticallyselected and transmitted to the requesting device to enable anindependent performance of the job flow as part of a review of thatprevious performance.

However, if the request was for a repeat of the previous performance ofthe job flow by the one or more federated devices 2500, then instead of(or in addition to) transmitting the objects needed to repeat theprevious performance to the requesting device, the processor(s) 2550 maybe caused by execution of the performance component 2544 to use thoseobjects to repeat the previous performance within a federated area 2566in which at least one of the objects is stored and/or to which the userassociated with the request has been granted access. In someembodiments, the federated area 2566 in which the previous performancetook place may be selected, by default, to be the federated area 2566 inwhich to repeat the performance. Indeed, repeating the performancewithin the same federated area 2566 may be deemed a requirement to trulyreproduce the conditions under which the previous performance occurred.More specifically, the processor(s) 2550 may be caused to execute thetask routines 2440 specified in the instance log 2720, in the orderspecified in the job flow definition 2220 specified in the request, andusing the one or more data sets 2330 specified in the request as inputdata objects. In some embodiments, where multiple ones of the federateddevices 2500 are operated together as the federated device grid 2005,the processor(s) 2550 of the multiple ones of the federated devices 2500may be caused by the performance component 2544 to cooperate to dividethe execution of one or more of the tasks thereamong. Such a division ofone or more of the tasks may be deemed desirable where one or more ofthe data objects associated with the job flow is of relatively largesize. Regardless of the quantity of the federated devices 2500 involvedin repeating the previous performance of the job flow, upon completionof the repeat performance, the processor(s) 2550 may be further causedby the performance component 2544 to transmit the newly regeneratedresult report 2770 to the requesting device. Alternatively oradditionally, the processor(s) 2550 may perform a comparison between thenewly regenerated result report 2770 and the result report 2770previously generated in the previous performance to determine if thereare any differences, and may transmit an indication of the results ofthat comparison to the requesting device. Thus, based on a request thatprovided only identifiers for a job flow definition 2220 and one or moredata objects used as inputs to the job flow, a previous performance of ajob flow may be repeated and the results thereof transmitted to therequesting device as part of a review of the previous performance.

In still another example use of an indirect reference to objects, arequest may be received by the one or more federated devices 2500 toperform a specified job flow with one or more specified data objects asinputs (e.g., one or more of the data sets 2330). Thus, the request mayinclude the job flow identifier 2221 of the job flow definition 2220 forthe job flow, and may include one or more data object identifiers 2331of the one or more data sets 2330 to be employed as input data objects,but may not include any identifiers for any other objects needed for theperformance.

The processor(s) 2550 may be caused by the selection component 2543 toemploy the job flow identifier 2221 provided in the request to retrievethe job flow definition 2220 for the job flow to be performed. Theprocessor(s) 2550 may then be caused to retrieve the flow taskidentifiers 2241 from the job flow definition 2220 that specify thetasks to be performed, and may employ the flow task identifiers 2241 toretrieve the newest version of task routine 2440 within one or morefederated areas 2566 (e.g., within the task routine database 2564 withineach of one or more federated areas 2566) for each task. Theprocessor(s) 2550 may also be caused by the selection component 2543 toemploy the job flow identifier 2221 and the one or more data objectsidentifiers 2331 to search the one or more federated areas 2566 for anyinstance logs 2720 that provide an indication of a past performance ofthe specified job flow with the specified one or more input dataobjects.

If no such instance log identifier 2721 is found, then it is anindication that there is no record within the one or more federatedareas of any previous performance of the specified job flow with the oneor more specified data sets 2330. In response, the processor(s) 2550 maybe caused by execution of the performance component 2544 to execute theretrieved newest version of each of the task routines 2440 to performthe tasks of the job flow in the order specified in the job flowdefinition 2220 specified in the request, and using the one or more datasets 2330 specified in the request as input data objects. Again, inembodiments in which multiple ones of the federated devices 2500 areoperated together as the federated device grid 2005, the processor(s)2550 may be caused by the performance component 2544 to cooperate todivide the execution of one or more of the tasks thereamong. Uponcompletion of the performance of the job flow, the processor(s) 2550 maybe further caused by the performance component 2544 to transmit theresult report 2770 generated in the performance of the job flow to therequesting device. Thus, based on a request that provided onlyidentifiers for a job flow definition 2220 and one or more data objectsused as inputs to the job flow, a performance of a job flow is caused tooccur using the newest available versions of task routines 2440 toperform each task.

However, if such an instance log identifier 2721 is found, then it is anindication that there was a previous performance of the job flowspecified in the request where the one or more data sets 2330 specifiedin the request were used as input data objects. If a situation shouldoccur where multiple ones of such instance log identifiers 2721 arefound, then it is an indication that there have been multiple previousperformances of the job flow, and the processor(s) 2550 may be caused bythe selection component 2543 to select the most recent one of themultiple previous performances, by default. After the finding of asingle previous performance, or after the selection of the most recentone of multiple previous performances, the processor(s) 2550 may then becaused by the selection component 2543 to retrieve the task routineidentifiers 2441 specified within the corresponding instance log 2720 ofthe particular task routines 2440 used in the previous performance. Theprocessor(s) 2550 may then employ those task routine identifiers 2441 toretrieve the particular task routines 2440 associated with the previousperformance from one or more federated areas 2566. The processor 2550may then compare each of the task routines 2440 specified in theinstance log 2720 to the newest task routines 2440 retrieved for eachtask specified in the job flow definition 2220 to determine whether allof the task routines 2440 specified in the instance log 2720 are thenewest versions thereof. If so, then the result report 2770 generated inthe previous performance associated with the instance log 2720 wasgenerated using the most recent versions of each of the task routines2440 needed to perform the tasks of the job flow. The processor(s) 2550may then entirely forego performing the job flow, may employ the resultreport identifier 2771 provided in the instance log 2720 to retrieve theresult report 2770 generated in the earlier performance, and maytransmit that result report 2770 to the requesting device. In this way,a form of caching is provided by which the previously generated resultreport 2770 is able to be recognized as reusable, and the use ofprocessing resources of the one or more federated devices 2500 to repeata previous performance of the job flow is avoided.

It should be noted, however, that a situation may arise in which one ormore of the task routines 2440 specified in the instance log 2720 arethe newest versions thereof, while one or more others of the taskroutines 2440 specified in the instance log 2720 are not. In response tosuch a situation, the processor(s) 2550 may be caused by the selectionroutine 2543 to check whether at least the task routine 2440 specifiedin the instance log 2720 as performing the first task in the order oftasks specified in the job flow definition 2220 is the newest version oftask routine 2440 able to perform that task. If not, then theprocessor(s) 2550 may be caused by the performance component 2544 toemploy all of the newest versions of the task routines 2440 to performthe entire job flow, just as the processor(s) 2550 would be caused to doso if there had been no previous performance of the job flow, at all.However, if the first task in the previous performance of the job flowwas performed with the newest version of task routine 2440 able toperform that first task, then the processor(s) 2550 may iterate througheach task in the order of tasks specified in job flow definition 2720 todetermine which were performed with the newest version of task routine2440. The processor(s) 2550 would start with the first task in thespecified order of tasks, and stop wherever in the specified order oftasks the processor(s) 2550 determine that a task routine 2440 was usedthat is not the newest version thereof. In this way, the processor(s)2550 may identify an initial portion of the order of tasks specified inthe job flow definition 2220 that may not need to be performed again asthey were already performed using the newest versions of theirrespective task routines 2440. As a result, only the remainder of thetasks that follow the initial portion in the order of tasks may need tobe performed again, but using the newest versions of their respectivetask routines 2440 for all of those remaining tasks. In this way, a formof partial caching is provided by which an initial portion of a previousperformance of a job flow is able to be reused such that not all of thejob flow needs to be performed again to generate a result report 2770 tobe transmitted to the requesting device.

FIG. 20B illustrates two examples of searching for objects using one ormore identifiers that provide an indirect reference to those objects ingreater detail. More specifically, FIG. 20B depicts two differentsearches for objects that each employ the example instance logidentifier 2721 afg 2 h associated with the 2720 afg 2 h instance log ofthe example performance of the job flow 2200 fgh of FIGS. 17A-E.

In one example search, and referring to both FIGS. 20A and 20B, arequest may be received (and stored as part of the request data 2535)for the retrieval of objects associated with, and/or for a repetitionof, the example performance 2700 afg 2 h that resulted in the generationof the result report 2770 afg 2 h. In so doing, the request may use theresult report identifier 2771 afg 2 h to refer to the result report 2770afg 2 h, while providing no other identifier for any other objectassociated with the performance 2700 afg 2 h. In response, theprocessor(s) 2550 may be caused by the selection component 2543 tocooperate with the database component 2545 to search the instance logidentifiers 2721 of the instance log database 2567 within one or morefederated areas 2566 to locate the one of the multiple instance logidentifiers 2721 that includes the result report identifier 2771 afg 2h. As depicted, the instance log identifier 2721 afg 2 h is the one ofthe multiple instance log identifiers 2721 that contains the resultreport identifier 2771 afg 2 h. With the instance log identifier 2721afg 2 h having been found, the processor(s) 2550 may then be caused bythe selection component 2543 to retrieve, from the instance log 2720 afg2 h, the identifiers of the various objects requested to be transmittedto the requesting device and/or needed to repeat the example performance2700 afg 2 h.

In another example search, a request may be received for a repetition ofa previous performance of a specific job flow with a specific dataobject used as input. In so doing, the request may refer to the examplejob flow 2200 fgh of FIGS. 17A-E by using the job flow identifier 2221fgh of the job flow definition 2220 fgh that defines the example jobflow 2200 fgh, and may refer to the data set 2330 a by using the dataobject identifier 2331 a. In response, the processor(s) 2550 may becaused by the selection component 2543 to cooperate with the databasecomponent 2545 to search the instance log identifiers 2721 of theinstance log database 2567 within one or more federated areas 2566 tolocate any of the multiple instance log identifiers 2721 that includesthe both the job flow identifier 2221 fgh and the data object identifier2331 a. As depicted, the instance log identifier 2721 afg 2 h is the oneof the multiple instance log identifiers 2721 that contains both ofthese identifiers 2221 fgh and 2331 a. With the instance log identifier2721 afg 2 h having been found, the processor(s) 2550 may then be causedby the selection component 2543 to retrieve, from the instance log 2720afg 2 h, the identifiers of the various objects needed to repeat theexample performance 2700 afg 2 h. The processor(s) 2550 may then becaused by execution of the performance component 2544 to perform theexample job flow 2200 fgh with the data set 2330 a as the input dataobject.

FIGS. 21A, 21B and 21C, together, illustrate aspects of an automatedtransfer relationship that may be put in place between two or morefederated areas 2566 in which one or more objects may be automaticallycopied from one federated area to another through a transfer area 2666in response to a specified condition being met. FIG. 21A depicts aspectsof the configuration of transfer areas 2666 and corresponding automatedtransfers of copies of objects, FIG. 21B depicts an example ofgenerating a transfer area 2666 as overlapping portions of two federatedareas 2566 involved in such transfers, and FIG. 21C depicts an exampleof generating a transfer area 2666 within a base federated area fromwhich each of the two federated areas 2566 involved in such transfersbranch.

Unlike the earlier described inheritance, priority and dependencyrelationships that each extend among two or more federated areas 2566along a pathway within a single hierarchy of levels of accessrestriction of federated areas, either within a linear hierarchy (asintroduced in FIG. 15A) or within a branch of a hierarchical tree (asintroduced in FIG. 15B), the automated transfer relationship in whichcopies of one or more objects are automatically transferred from onefederated area 2566 to another may be put in place among two or morefederated areas 2566 that are within different branches of ahierarchical tree. Therefore, unlike the earlier described inheritance,priority and dependency relationships that must follow such hierarchicalpathways, the automated transfer relationship is not restricted tofollowing such pathways. This enables one or more automated transferrelationships to be put in place within a hierarchical tree on atemporary basis for only so long as they are needed. Stated differently,while the inheritance, priority and dependency relationships are tied tothe structure of a hierarchy formed among multiple federated areas suchthat making changes to such relationships may necessarily be coordinatedchanges in pathways within hierarchical structures, the automatedtransfer relationships can be put in place, modified and/or removedwithout regard to such pathways.

There may be any of a variety of scenarios that serve as the basis forputting in place such a automated transfer relationship. By way ofexample users and/or groups of users associated with private and/orintervening federated areas 2566 within different branches of ahierarchical tree may choose to collaborate on the development of one ormore objects as part of a larger project or other undertaking where,otherwise, these users and/or groups of users would normally have littleor no need to share objects thereamong beyond the reusing of objectsthat may be stored within the single base federated area 2566 from whicheach of their private and/or intervening federated areas 2566 branch. Assuch a collaboration may be temporary in nature such that it may ceasewhen the goal of the collaboration is achieved, the automated transferrelationship that is created among such users may be caused to existonly for the duration of that collaboration.

Turning to FIG. 21A, as depicted there may be one or multiple transferareas 2666 created among multiple federated areas 2566 to implement oneor more automated transfer relationships thereamong. More specifically,within a single hierarchical tree of federated areas 2566, there may bemultiple transfer areas 2666 that each serve to transfer copies ofobjects from one federated area to another. As will be discussed ingreater detail, a single transfer relationship may involve the use of asingle transfer area 2666 to support the automated transfer of copies ofobjects from one federated area to another. However, it may also be thata single transfer relationship may extend among a chain of more than twofederated areas, and therefore, may include multiple transfer areas 2666to support automated transfers of copies of objects from one federatedarea to another, and then to another, and so on, along such a chain.

Many of the characteristics of a transfer relationship may be defined bya corresponding transfer flow definition 2620 that may function in manyways that are similar to the earlier discussed job flow definitions2220. More specifically, as with the performance of a job flow 2200 of ajob flow definition 2220 through execution of one or more selected taskroutines 2440 by one or more processors 2550 under the control of theperformance component 2544, a transfer relationship may be similarlydefined by a transfer flow definition 2620 to include the execution ofone or more transfer routines 2640 by the one or more processors 2550under the control of the performance component 2544. Each transfer flowdefinition 2620 may identify the specific two or more federated areas2566 among which the corresponding automated transfer relationship is tobe put in place, and may specify the order and/or direction(s) of theautomated transfers among those specified federated areas 2566. Eachtransfer flow definition 2620 may also identify each of the transferroutines 2640 that may be stored and executed within each of thespecified federated areas 2566 to repeatedly check for when a specifiedcondition to trigger a transfer has been met, and to then perform atleast part of an automated transfer from one of the specified federatedareas 2566 to another through a specified transfer area 2666. Such acondition may be specified within the transfer flow definition 2620 ormay be specified within the transfer routine 2640 that is executed torepeatedly check for whether that condition has been met.

Indications of what transfer relationships are in place may bemaintained by the one or more federated devices 2500 as part of transferarea parameters 2636. The processor(s) 2550 of the one or more federateddevices 2500 may update the transfer area parameters 2636 as eachtransfer relationship is put in place and/or is removed.

Turning to FIG. 21B, as depicted, a relatively simple transferrelationship between two intervening federated areas 2566 t and 2566 uwithin a hierarchical tree of federated areas may be put in place with acorresponding single transfer area 2666 tu being formed where portionsof the two federated areas 2566 t and 2566 u overlap. More precisely, insetting up the depicted transfer relationship between the federatedareas 2566 t and 2566 u, the processor(s) 2550 of the one or morefederated devices 2500 may be caused (e.g., by the federated areacomponent 2546) to manipulate the locations of one or both of thefederated areas 2566 t and 2566 u to form a storage area at whichportions of both federated areas 2566 t and 2566 u overlap, which maythen be defined as the transfer area 2666 tu.

Also as part of putting in place the depicted transfer relationship, atransfer routine 2640 t may be stored within the intervening federatedarea 2566 t, and a transfer routine 2640 u may be stored within theintervening federated area 2566 u. Further, the transfer flow definition2620 tu may be stored within the base federated area 2566 x at which itmay be made accessible from both of the federated areas 2566 t and 2566u through use of inheritance relationships. Alternatively, the transferflow definition 2620 tu may be stored within a portion of the storagearea at which portions of the federated areas 2566 t and 2566 u overlap,either alongside or within the transfer area 2666 tu.

As has been discussed, processor(s) 2550 of the one or more federateddevices 2500 may be caused by the performance component 2544 to executeone or more task routines 2440 within each federated area 2566 inresponse to requests to perform the tasks defined in various job flows2200 by corresponding job flow definitions 2220. As a job flow 2200 isso performed within a federated area 2566, a transfer routine 2640 of anautomated transfer relationship that includes that federated area 2566may also be executed to determine if the performance of that job flow2200 has caused a specified condition to be met that triggers thetransfer of a copy of one or more objects from that federated area 2566to another federated area 2566 through a corresponding transfer area2666. More specifically, and by way of the example presented in FIG.21B, at a time when the depicted task routine 2440 t is executed withinthe intervening federated area 2566 t as part of performing a job flowdefined by the depicted job flow definition 2220 t, the transfer routine2640 t may also be executed to determine whether the results of theexecution of the task routine 2440 t has caused a specified condition tobe met.

The specified condition may include any of a variety of required events,outcomes of comparisons of values, quantities of iterations of aperformance, etc. By way of example, a specified condition may simply bethat a particular data set has been generated by a performance of a jobflow 2200, and the processor(s) 2550 may be caused by the transferroutine 2640 to simply repeatedly check whether the performance of thejob flow 2200 has caused the generation of the specified data set.Alternatively, a specified condition may include a requirement that oneor more data values within such a generated data set must fall withinone or more specified ranges of data values, and the processor(s) 2550may be caused by the transfer routine 2640 to check for both thegeneration of a specified data set and for whether the one or morespecified data values thereof do fall within the specified one or moreranges of data values. Regardless of what the specified condition maybe, upon a determination that the specified condition has been met, theprocessor(s) 2550 may be caused by execution of the transfer routine2640 to transfer a copy of each of one or more objects from onefederated area 2566 to a transfer area 2666 as part of transferring theone or more copies to another federated area 2566. More specifically,and continuing with the example presented in FIG. 21B, upon determiningthat a specified condition has been met, execution of the transferroutine 2640 t within the intervening federated area 2566 t may causethe processor(s) 2550 to perform a transfer of copies of a data set 2370t, the task routine 2440 t and/or a corresponding result report 2770 tto the transfer area 2666 tu.

Another transfer routine 2640 associated with the same automatedtransfer relationship may be executed within the other federated area2566 to monitor the transfer area 2666 for the occurrence of thetransfer of the one or more copies of objects thereto. In response todetermining that the one or more copies of objects have been sotransferred into the transfer area 2666, the processor(s) 2550 may becaused by further execution of the other transfer routine 2640 totransfer the one or more copies of objects from the transfer area 2666and into the other federated area 2566. In so doing, the one or morecopies of objects become available within the other federated area 2566for use in a performance of another job flow 2200 specified by anotherjob flow definition 2220. More specifically, and continuing with theexample presented in FIG. 21B, upon determining that copies of the dataset 2370 t, the task routine 2440 t and/or the result report 2770 t havebeen transferred into the transfer area 2666 tu, execution of thetransfer routine 2640 u within the intervening federated area 2566 u maycause the processor(s) 2550 to perform a transfer of those copies fromthe transfer area 2666 tu, and into the intervening federated area 2566u. As depicted, with those copies so transferred into the interveningfederated area 2566 u, those copies may be employed in a performance ofa different job flow defined by the depicted job flow definition 2220 u,and which may entail the execution of the depicted task routine 2440 u.

Turning to FIG. 21C, as an alternative to the example of FIG. 21B, arelatively simple transfer relationship between two interveningfederated areas 2566 t and 2566 u within the same hierarchical tree offederated areas may be put in place with a corresponding single transferarea 2666 tu being formed within the base transfer area 2566 x fromwhich both of the federated areas 2566 t and 2566 u branch. Moreprecisely, in setting up the depicted transfer relationship between thefederated areas 2566 t and 2566 u, the processor(s) 2550 of the one ormore federated devices 2500 may be caused (e.g., by the federated areacomponent 2546) to instantiate the transfer area 2666 tu within the basefederated area 2566 x. It should be noted that this example of atransfer relationship between the intervening federated areas 2566 t and2566 u may rely on each of the intervening federated areas 2566 t and2566 u having at least an inheritance relationship with the basefederated area 2566 x

Also as part of putting in place the depicted transfer relationship, thetransfer routines 2640 t and 2640 u may be stored within the interveningfederated areas 2566 t and 2566 u, respectively, or may both be storedwithin the transfer area 2666 tu instantiated within the based federatedarea 2566 x, as depicted. Further, he transfer flow definition 2620 tumay be stored within the base federated area 2566 x at which it may bemade accessible from both of the federated areas 2566 t and 2566 u, asdepicted, either alongside or within the transfer area 2666 tu.

Again, processor(s) 2550 of the one or more federated devices 2500 maybe caused by the performance component 2544 to execute one or more taskroutines 2440 t within the federated area 2566 t in response to requeststo perform the tasks defined in a job flow 2200 by the job flowdefinition 2220 t. As that job flow 2200 is so performed, the transferroutine 2640 t may also be executed to determine if the performance ofthat job flow 2200 has caused a specified condition to be met thattriggers the transfer of a copy of one or more objects from theintervening federated area 2566 t to the intervening federated area 2566u through the transfer area 2666 tu.

Again, regardless of what the specified condition may be, upondetermining that the specified condition has been met, execution of thetransfer routine 2640 t within the intervening federated area 2566 t orwithin the base federated area 2566 x (as depicted) may cause theprocessor(s) 2550 to perform a transfer of copies of the data set 2370t, the task routine 2440 t and/or the result report 2770 t to thetransfer area 2666 tu.

Again, the transfer routine 2640 u may be executed within theintervening federated area 2566 u or within the base federated area 2566x (as depicted) to monitor the transfer area 2666 tu for the occurrenceof the transfer of copies of the data set 2370 t, the task routine 2440t and/or the result report 2770 t thereto, such that those copies becomeavailable within the transfer area 2666 tu. In response to determiningthat those copies have been so transferred into the transfer area 2666tu, the processor(s) 2550 may be caused by further execution of theother transfer routine 2640 u to transfer those copies from the transferarea 2666 tu and into the intervening federated area 2566 u. In sodoing, the copies of the data set 2370 t, the task routine 2440 t and/orthe result report 2770 t become available within the interveningfederated area 2566 u for use in a performance of another job flow 2200specified by the job flow definition 2220 u, and which may entail theexecution of the depicted task routine 2440 u.

FIGS. 22A, 22B and 22C, together, illustrate in greater detail themanner in which an example automatic transfer relationship may beconfigured by an example transfer flow definition 2620 tu. FIGS. 22A-C,together, also illustrate in greater detail the manner in which exampletransfers of example task routines 2440 m and 2440 n may be performed asper the example transfer flow definition 2620 tu. For sake of ease ofdiscussion and understanding, the same hierarchical tree introduced inFIGS. 21B and 21C is used in this example of FIGS. 22A-D. Also, thisexample automatic transfer relationship and associated conditions aredeliberately simplified for purposes of illustration, and should not betaken as limiting what is described and claimed herein to suchrelatively simple embodiments.

In this depicted example, an automatic transfer relationship is definedin the transfer flow definition 2620 tu between the interveningfederated areas 2566 t and 2566 u in which copies of the task routines2440 m and/or 2440 n are to be transferred from the interveningfederated area 2566 t, through the transfer area 2666 tu, and intointervening federated area 2566 u, when at least one specific conditionis determined to have been met within the intervening federated area2566 t. As depicted, the transfer area 2666 tu has been instantiated ina manner similar to what was earlier depicted and discussed in referenceto FIG. 21B, in which the intervening federated areas 2566 t and 2566 uhave been manipulated to create a storage space at which theseintervening federated areas overlap. However, at least as was depictedand discussed in reference to FIG. 21C, the transfer area 2666 tu may beinstantiated within any of a variety of other forms of storage space,including within the storage space of the base federated area 2566 xfrom which both of the intervening federated areas 2566 t and 2566 u maybranch and/or have at least inheritance relationships with.

It may be that this example automatic transfer relationship between theintervening federated areas 2566 t and 2566 u was created to enableusers with access to the intervening federated area 2566 t to do thework of creating the task routines 2440 m and 2440 n, and to enableusers with access to the intervening federated area 2566 u to beautomatically granted access to copies of the task routines 2440 mand/or 2440 n when one or more conditions are met. Once granted accessto such copies of the task routines 2440 m and/or 2440 n, users withaccess to the intervening federated area 2566 u would then be able toperform tests thereof and/or add the task routines 2440 m and/or 2440 nto a larger set of objects as part of performing any of a variety ofother job flows 2200.

Turning more specifically to FIG. 22A, a user with access to the privatefederated area 2566 m may generate the task routine 2440 m from tasksource code, and/or may generate a data set 2330 m. It may be that thisparticular user may be a developer of task routines and may generate thetask routine 2440 m by compiling the depicted task source code. The userwith access to the private federated area 2566 m may then transfer thetask routine 2440 m (or a copy thereof) to the intervening federatedarea 2566 t. In some embodiments, this may be done to add the taskroutine 2440 m to a larger development environment. By way of example,this user may thereby add the task routine 2440 m to larger set ofroutines that are to be linked together in any of a variety of ways,such as a set of routines that form a piece of software, such as anapplication, a device driver, a software utility, an operating system,etc. Prior to such a transfer, the hierarchical tree structure by whichthe private federated area 2566 m is related to the interveningfederated area 2566 t and the base federated area 2566 x may allow theuser with access to the private federated area 2566 m to independentlydevelop the task routine 2440 m without risk of causing disruption tothe collective work of the multiple users with access to the interveningfederated area 2566 t as by not allowing access by at least some ofthose multiple users to the task routine 2440 m while it remains solelywithin the private federated area 2566 m. Alternatively or additionally,this may also prevent at least a subset of the users with access to theintervening federated area 2566 t from accessing the task source codefrom which the task routine 2440 m is generated, which may be deemed toinclude trade secrets and/or other forms of information and/orintellectual property that is deemed undesirable to share more widely.When the task routine 2440 m (or a copy thereof) is subsequentlytransferred into the intervening federated area 2566 t, the act of doingso may cause the task routine 2440 m to replace an earlier version oftask routine (not shown) that may perform the same task as the taskroutine 2440 m. Stated differently, the task routine 2440 m may bedeemed to be an improved version of a previous task routine that wasrelied upon to perform a task that the task routine 2440 m is intendedto now be used to perform.

Regardless of what exactly the task routine 2440 m is, or what task itis meant to perform, or other circumstances surrounding its transferinto the intervening federated area 2566 t, as depicted, the taskroutine 2440 m may then be subjected to being used to perform its taskthrough multiple performances of a job flow defined by a job flowdefinition 2220 m. This may be part of an initial testing regime toconfirm basic functionality of the task routine 2440 m. With eachperformance of this job flow, an iteration of a result report 2770 m maybe an output that is generated by the execution of the task routine 2440m by the processor(s) 2550 of the one or more federated devices 2500. Asa result of execution of the transfer routine 2640 t, the processor(s)2550 may also be caused to analyze each such iteration of the resultreport 2770 m to determine whether or not a condition has been met thatmay trigger the transfer of a copy of the task routine 2440 m to theintervening federated area 2566 u via the transfer area 2666 tu. In thisexample, the condition may include a requirement that at least aspecified number of iterations of the job flow defined by the job flowdefinition 2220 m have been performed such that iterations of the resultreport 2770 m have been successfully generated at least the specifiednumber of times. Alternatively or additionally, the condition mayinclude a requirement that one or more data values in at least oneiteration of the result report 2770 m exhibit one or more specificcharacteristics. Any of a variety of other conditions may bealternatively or additionally specified that entail an analysis ofiterations of the result report 2770 m to determine whether a copy ofthe task routine 2440 m is to be transferred to the interveningfederated area 2566 u.

Similarly, it may be that a user with access to the private federatedarea 2566 n may similarly generate the task routine 2440 n from othertask source code, and/or may generate a data set 2330 n. Like the userwith access to the private federated area 2566 m, the user with accessto the private federated area 2566 n may also be a developer of taskroutines and may generate the task routine 2440 n by compiling the otherdepicted task source code, and may then transfer the task routine 2440 n(or a copy thereof) to the intervening federated area 2566 t. As withthe task routine 2440 m, this may be done to add the task routine 2440 nto a larger development environment, and such a larger development maythe same one to which the task routine 2440 m is added. As with the taskroutine 2440 m, addition of the task routine 2440 n (or a copy thereof)into the intervening federated area 2566 t may cause the task routine2440 n to replace an earlier version of task routine (not shown) thatmay perform the same task as the task routine 2440 n.

In a manner similar to the task routine 2440 m, the task routine 2440 nmay also be subjected to being used to perform its task through multipleperformances of a job flow defined by a job flow definition 2220 n.Again, this may be part of an initial testing regime to confirm basicfunctionality of the task routine 2440 n. With each performance of thisjob flow, an iteration of a result report 2770 n may be an output thatis generated by the execution of the task routine 2440 n by theprocessor(s) 2550 of the one or more federated devices 2500. As a resultof execution of the transfer routine 2640 t, the processor(s) 2550 mayalso be caused to also analyze each such iteration of the result report2770 n to determine whether or not a condition has been met that maytrigger the transfer of a copy of the task routine 2440 n to theintervening federated area 2566 u via the transfer area 2666 tu. As withthe task routine 2440 m, any of a variety of conditions may be specifiedthat entail an analysis of iterations of the result report 2770 n todetermine whether a copy of the task routine 2440 n is to be transferredto the intervening federated area 2566 u.

FIG. 22B more specifically depicts such a transfer of copies of the taskroutines 2440 m and/or 2440 n from the intervening federated area 2566 tto the transfer area 2666 tu by the transfer routine 2640 t, and thenthe transfer of those copies from the transfer area 2666 tu to theintervening federated area 2566 u by transfer routine 2640 u. Theprocessor(s) 2550 may be caused by execution of the transfer routine2640 u to repeatedly check the transfer area 2666 tu to determinewhether copies of the task routines 2440 m and/or 2440 n have beentransferred thereto (e.g., stored therein) as a result of execution ofthe transfer routine 2640 t. Upon determining that copies of the taskroutines 2440 m and/or 2440 n have been so transferred into the transferarea 2666 tu, the processor(s) 2550 of the one or more federated devices2500 may be caused by the transfer routine 2640 u to transfer thosecopies therefrom and into the intervening federated area 2566 u.

Turning more specifically to FIG. 22C, with the copies of the taskroutines 2440 m and 2440 n transferred into the intervening federatedarea 2566 u, as depicted, these task routines 2440 m and 2440 n may bothbe utilized in performing tasks in repetitive performances of a job flowdefined by a job flow definition 2220 u. More specifically, both a usergranted access to the private federated area 2566 q and a user grantedaccess to the private area 2566 r may separately generate data sets 2330q and 2330 r, respectively, that may each be employed as inputs intoseparate repeated performances of the job flow defined by the job flowdefinition 2220 u, which may result in the generation of multipleiterations of result reports 2770 q and 2770 r, respectively. Suchinclusion of the task routines 2440 m and 2440 n in such side-by-siderepeated performances with differing data sets may be part of a testingregime performed by the users with access to each of the privatefederated areas 2566 q and 2566 r in which the task routines 2440 m and2440 n are tested together to further confirm their functionality and/orworthiness for release to a wider number of users. It may be that,following success in such a testing regime, the task routines 2440 mand/or 2440 n may be transferred to the base federated area 2566 x wherethey may become more generally accessible.

FIGS. 23A, 23B, 23C, 23D and 23E, together, illustrate in greater detailthe manner in which another example automatic transfer relationship maybe configured by another example transfer flow definition 2620 tuv.FIGS. 23A-E, together, also illustrate in greater detail the manner inwhich example transfers of example data sets 2370 t and 2370 u may beperformed as per the example transfer flow definition 2620 tuv. For sakeof ease of discussion and understanding, the same hierarchical treeintroduced in FIGS. 21B and 21C is again used in this example of FIGS.23A-E, though with the addition of a third intervening federated area2566 v and a second transfer area 2666 uv. Again, this example automatictransfer relationship and associated conditions are deliberatelysimplified for purposes of illustration, and should not be taken aslimiting what is described and claimed herein to such relatively simpleembodiments.

In this depicted example, an automatic transfer relationship is definedin the transfer flow definition 2620 tuv among the intervening federatedareas 2566 t, 2566 u and 2566 v in which a copy of the data set 2370 tis to be transferred from the intervening federated area 2566 t and intothe intervening federated area 2566 u through the transfer area 2666 tubased on at least a first condition. Also, in this automatic transferrelationship, a copy of the data set 2370 u is to be transferred fromthe intervening federated area 2566 u and into either the interveningfederated area 2566 t through the transfer area 2666 tu, or into theintervening federated area 2566 v through a transfer area 2666 uv, basedon at least a second condition. As with the example automatic transferrelationship of FIGS. 22A-C, the transfer areas 2666 tu and 2666 uv haveeach been instantiated in a manner similar to what was earlier depictedand discussed in reference to FIG. 21B, in which the interveningfederated areas 2566 t, 2566 u and 2566 v have been manipulated tocreate storage spaces at which there is overlap. Again, however, each ofthe transfer areas 2666 tu and/or 2666 uv may be instantiated within anyof a variety of other forms of storage space, including within thestorage space of the base federated area 2566 x from which each of theintervening federated areas 2566 t, 2566 u and 2566 v may branch, and/orwith which each may have at least an inheritance relationship.

It may be that this example automatic transfer relationship between theintervening federated areas 2566 t, 2566 u and 2566 v was created toenable users with access to each of these federated areas to collaboratein the development of a neural network defined by weights and biasesapplied to a set of emulated neurons interconnected as nodes in anetwork. Users with access to the intervening federated area 2566 t maydo the work of creating at least an initial version of the neuralnetwork through a training process performed within the interveningfederated area 2566 t. Users with access to the intervening federatedarea 2566 u may subsequently test one or more characteristics of atleast the initial version of the neural network within the interveningfederated area 2566 u. Then, users with access to the interveningfederated area 2566 v may subsequently employ at least a refined versionof the neural network in experimental use scenarios within theintervening federated area 2566 v to determine readiness for widerrelease to other users within the base federated area 2566 x. As will beexplained in greater detail, the performances of each of these differentphases in the development of the neural network may be controlled andenabled by the transfer of the data sets 2370 t and 2370 u among theintervening federated areas 2566 t, 2566 u and 2566 v.

Turning more specifically to FIG. 23A, a user with access to the privatefederated area 2566 m or 2566 n may generate a training data set 2330 tfrom a larger data set 2330 x that may be stored within the basefederated area 2566 x. The data set 2330 x may include indications of agreat many instances of inputs to a system that begat desired outputs inembodiments in which the neural network is being developed to exhibitthe behavior of that system. In creating the training data set 2330 tfor such training purposes, this user may employ any of a variety ofstatistical processes to derive the data set 2330 t to havecharacteristics that are at least partially representative ofcharacteristics of the larger data set 2330 x to make the data set 2330t appropriate for use in training a set of emulated neuronsinterconnected as nodes of a network to function cooperatively in amanner that defines a neural network that is effective at performing oneor more selected functions. As will be familiar to those skilled in theart, this may entail random sampling of the larger data set 2330 x togenerate the training data set 2330 t, and/or selectively emphasizingand/or de-emphasizing the degree to which the training data set 2330 texhibits one or more characteristics exhibited by the larger data set2330 x.

As will be familiar to those skilled in the art of developing neuralnetworks, with the training data set 2330 t so generated, the trainingdata set 2330 t (or at least differing portions thereof) may be employedthrough one or more training operations to derive at least an initialversion of a neural network. As depicted, in this example, this mayentail repeated performances of a job flow defined by the job flowdefinition 2220 t during which each iteration of training may beperformed. More specifically, one or more instances of task routine(s)2440 t may be repeatedly executed to repeatedly emulate individualand/or interconnected sets of neurons, and with at least portions of thetraining data set 2330 t used in each iteration, to generate iterationsof the result report 2770 t. Each iteration of the result report 2770 tgenerated by each such performance may provide indications of howsuccessful the developing neural network is becoming at performing theone or more selected functions. Alternatively or additionally, eachiteration of the result report 2770 t may be employed alongside thetraining data set 2330 t as an input to each subsequent performance aspart of further developing the neural network. With each suchperformance, a definition of the developing neural network may be storedas a set of weights and biases indicated within the data set 2370 t suchthat the data set 2370 t is caused to define the neural network that isso created.

As a result of execution of the transfer routine 2640 t, theprocessor(s) 2550 may also be caused to analyze each resulting iterationof the result report 2770 t to determine whether or not a condition hasbeen met that may trigger the transfer of a copy of the data set 2370 tto the intervening federated area 2566 u via the transfer area 2666 tu.In this example, the condition may include a requirement that at least aspecified degree of accuracy or other similar measure of performance ofthe developing neural network is achieved based on the analysis of eachsuccessive iteration of the result report 2770 t.

FIG. 23B more specifically depicts such a transfer of a copy of the dataset 2370 t from the intervening federated area 2566 t to the transferarea 2666 tu by the transfer routine 2640 t, and then the transfer ofthat copy from the transfer area 2666 tu to the intervening federatedarea 2566 u by transfer routine 2640 u. As with the example of FIGS.22A-C, the processor(s) 2550 may be caused by execution of the transferroutine 2640 u to repeatedly check the transfer area 2666 tu todetermine whether a copy of the data set 2370 t has been transferredthereto (e.g., stored therein) as a result of execution of the transferroutine 2640 t. Upon determining that such a copy has been sotransferred into the transfer area 2666 tu, the processor(s) 2550 of theone or more federated devices 2500 may be caused by the transfer routine2640 u to transfer that copy therefrom and into the interveningfederated area 2566 u.

Turning more specifically to FIG. 23C in addition to FIG. 23B, asdepicted, with the copy of the data set 2370 t transferred into theintervening federated area 2566 u, the data set 2370 t may be utilizedin one or more performances of a job flow defined by the job flowdefinition 2220 u to test the neural network defined by the weights andbiases for individual neurons and/or for point-to-point connectionsbetween neurons indicated within the data set 2370 t. More specifically,a user granted access to the private federated area 2566 q or 2566 r maygenerate a testing data set 2330 u from the larger data set 2330 x foruse in the repeated testing of the neural network, where at least aportion of the testing data set 2330 u is used as an input to theexecution of one or more task routines 2440 u during each suchperformance. Again, in so creating the testing data set 2330 u, thisuser may employ any of a variety of statistical processes to cause thetesting data set 2330 u to have characteristics that are at leastpartially representative of characteristics of the larger data set 2330x, and/or to selectively emphasize and/or de-emphasize one or morecharacteristics thereof. The weights and biases for neurons and/orpoint-to-point connections between neurons may enable the recreation ofthe neural network developed within the intervening federated area 2566t for each such performance within the intervening federated area 2566u. The task routines 2440 u may employ the data set 2370 t as an input,during their execution by the processor(s) 2550, to generate theemulations of individual and/or connected sets of neurons within theneural network. With each such performance, the results of the testsperformed may be indicated in corresponding iterations of the resultreport 2770 u.

In some embodiments, the processor(s) 2550 may be caused by furtherexecution of the transfer routine 2640 u to analyze each iteration ofthe result report 2770 u to determine whether or not a condition hasbeen met that may trigger the transfer of a copy of at least oneiteration of the result report 2770 u back to the intervening federatedarea 2566 t via the transfer area 2666 tu. In this example, thecondition may include a requirement that at least one iteration of theresult report 2770 u provide an indication of the neural network definedby the data set 2370 t failing to reach a specific target level ofaccuracy or other measure of performance based on the testing performedwithin the intervening federated area 2566 u. FIG. 23C more specificallydepicts such transfer of a copy of at least one iteration of the resultreport 2770 u from the intervening federated area 2566 u to the transferarea 2666 tu by the transfer routine 2640 u, and then the transfer ofthat copy from the transfer area 2666 tu to the intervening federatedarea 2566 t by transfer routine 2640 t. In such embodiments, theprocessor(s) 2550 may be caused by further execution of the transferroutine 2640 t to repeatedly check the transfer area 2666 tu todetermine whether a copy of at least one iteration of the result report2770 u has been transferred thereto (e.g., stored therein) as a resultof execution of the transfer routine 2640 u. Upon determining that sucha copy has been so transferred into the transfer area 2666 tu, theprocessor(s) 2550 of the one or more federated devices 2500 may becaused by the transfer routine 2640 t to transfer that copy therefromand into the intervening federated area 2566 t. In this way, indicationsof one or more characteristics of the failure of the previouslygenerated neural network is automatically communicated to the usersgranted access to the intervening federated area 2566 t as an aid togenerating an improved version of the neural network.

Turning to FIG. 23D, in some embodiments, the results of the testingperformed with the testing data set 2330 u may additionally be used togenerate a refined version of the neural network that may be defined byvalues for weights and biases indicated within a data set 2370 u thatmay be generated and/or augmented with each iteration of such testing.More specifically, indications of degree of failure indicated withiniterations of the result report 2770 u may be employed as correctivefeedback input used to derive refinements to the weights and/or biasesof the neural network. Thus, the data set 2370 t may serve to provide astarting point for weights and biases defining the neural networkgenerated within the intervening federated area 2566 t, and a definitionof a refined version of that neural network may be derived with thedefinition thereof stored as refined weights and biases stored withinthe data set 2370 u. In such embodiments, the processor(s) 2550 may alsobe caused by further execution of the transfer routine 2640 u to analyzeeach resulting iteration of the result report 2770 u to determinewhether or not a condition has been met that may trigger the transfer ofa copy of the data set 2370 u to the intervening federated area 2566 vvia the transfer area 2666 uv. Similar to the automated transfer of acopy of the data set 2370 t, the condition for such an automatedtransfer of a copy of the data set 2370 u may include a requirement thatat least a specified degree of accuracy or other similar measure ofperformance of the refined neural network is achieved based on theanalysis of each successive iteration of the result report 2770 u.

FIG. 23E more specifically depicts such a transfer of a copy of the dataset 2370 u from the intervening federated area 2566 u to the transferarea 2666 uv by the transfer routine 2640 u, and then the transfer ofthat copy from the transfer area 2666 uv to the intervening federatedarea 2566 v by transfer routine 2640 v. As with the transfer routine2640 u in the transfer of a copy of the data set 2370 t out of thetransfer area 2666 tu, the processor(s) 2550 may be caused by executionof the transfer routine 2640 v to repeatedly check the transfer area2666 uv to determine whether a copy of the data set 2370 u has beentransferred thereto (e.g., stored therein) as a result of execution ofthe transfer routine 2640 u. Upon determining that such a copy has beenso transferred into the transfer area 2666 uv, the processor(s) 2550 ofthe one or more federated devices 2500 may be caused by the transferroutine 2640 v to transfer that copy therefrom and into the interveningfederated area 2566 v.

With the copy of the data set 2370 u transferred into the interveningfederated area 2566 v, the data set 2370 u may be utilized inexperimental use cases as part of further testing of the now refinedneural network to determine readiness for release to a larger number ofusers. It may be that, following success in such an experimental usetesting regime, the data set 2370 u may be transferred to the basefederated area 2566 x where it may become more generally accessible.

It should be noted that, as an alternative to the generation of the dataset 2370 u including weights and biases for a refined version of theneural network, the testing performed within the intervening federatedarea 2566 u may not, in alternate embodiments, be used to test thefunctionality of the neural network defined by the weights and biasesincluded within the data set 2370 t without generating such refinements.Instead, the transfer routine 2640 u may analyze each iteration of theresult report 2770 u generated during each iteration of such testing todetermine whether or not a condition has been met for the transfer of acopy of the data set 2370 t to the intervening federated area 2566 v forexperimental use testing.

FIGS. 24A, 24B and 24C, together, illustrate aspects of the manner inwhich a non-neuromorphic implementation of an analytical function may bereplaced by a neuromorphic implementation. More specifically, FIGS. 24A,24B and 24C illustrate the manner in which an existing job flow thatemploys non-neuromorphic processing to perform an analytical functionmay be used to train a neural network employed as part of theneuromorphic processing of a new job flow to perform the same analyticalfunction much more quickly. FIG. 24A provides an overall depiction ofthe manner in which such a change from non-neuromorphic to neuromorphicprocessing may be implemented, FIG. 24B depicts aspects of an exampleneural network that may be employed in making such a change, and FIG.24C depicts aspects of an example artificial neuron of such a neuralnetwork. It should be noted that this example, as well as other examplespresented throughout this present application, concerning aspects ofreplacing a non-neuromorphic implementation of an analytical functionwith a neuromorphic implementation have been deliberately simplified forpurposes of illustration, and should not be taken as limiting what isdescribed and claimed herein to such relatively simple embodiments.

FIG. 24A depicts a performance of a job flow 2200 x by one or morefederated devices 2500 to perform an analytical function that employsone or more data sets 2330 as data input and provides one or more resultreports 2770 as data output. The job flow 2200 x, as defined by acorresponding job flow definition 2220 x, does not employ a neuralnetwork such that performances of the job flow 2200 x do not entailneuromorphic processing. Instead, the job flow 2200 x may employ justinstruction-based processing in which the processor(s) 2550 of the oneor more federated devices 2500 execute a stored set of executableinstructions that specify, step-by-step, the manner in which theanalytical function is to be performed. As will be familiar to thoseskilled in the art, and as has been described in great detail throughoutthis present application, such execution of instructions may involvejust sequential instruction execution by a single core of a singleprocessor, or may involve at least one or more instances of parallelinstruction execution by multiple cores of one or more processors.

However, FIG. 24A also depicts a selection between one of two differentimplementations of another job flow 2200 v, also performed by one ormore of the federated devices 2500, to perform the same analyticalfunction as the job flow 2200 x. In contrast to the job flow 2200 x, thejob flow 2200 v is defined by a corresponding job flow definition 2220 vto employ a neural network 2571 such that performances of the job flow2200 v do entail neuromorphic processing. Thus, a performance of the jobflow 2200 v entails the instantiation of the neural network 2571 basedon neural network configuration data 2371 that defines the neuralnetwork 2571, including its behavior. Among the two depictedimplementations of the job flow 2200 v, one implementation employs oneor more task routines 2440 v to implement the neural network 2571 in asoftware simulation thereof, and the other implementation employs one ormore neuromorphic devices 2570 to implement the neural network 2571using hardware components.

In either implementation of the job flow 2200 v, and as has beenpreviously discussed, the neural network configuration data 2371 may beincorporated into and/or otherwise stored in a federated area 2566 as adata set 2370. As such, the neural network configuration data 2371 maybe accessed and retrieved from such storage for use in a performance ofeither implementation of the job flow 2200 v in a manner very much likethe one or more data sets 2330 that are employed as an input to theanalytical function that the job flow 2200 v performs. As previouslydiscussed, such treatment of the neural network configuration data 2371as a data set 2370 (or as part of a data set 2370) enables thepreservation of the neural network configuration data 2371 within afederated area 2566 such that it is able to be reliably retrievedalongside the job flow definition 2220 v, the task routine(s) 2440 v anddata set(s) 2330 to be used as input.

In some embodiments in which the neural network 2571 is implemented in asoftware simulation, such an implementation may entail the parallelexecution of multiple copies of one or more of the task routines 2440 vby one or more cores of each of one or more of the processors 2550across one or more of the federated devices 2500. This may be the caseespecially where the neural network 2571 incorporates a large quantityof artificial neurons and/or multiple interconnected layers ofartificial neurons, and where the one or more processors 2550 that areso employed are central processing units (CPUs) that each incorporate arelatively small quantity of processing cores (e.g., less than a hundredprocessing cores per CPU). Alternatively, in other embodiments in whichthe neural network 2571 is implemented in a software simulation, such animplementation may entail such parallel execution by a larger quantityof processing cores of just one or a relatively small quantity of theprocessors 2550 within a single federated device 2500, especially whereeach processor 2500 is a graphics processing unit (GPU) that eachincorporate a relatively large quantity of processing cores (e.g.,thousands of processing cores per GPU).

However, in still other embodiments in which the neural network 2571 isimplemented using the one or more of the neuromorphic devices 2570, suchan implementation may entail the configuration of multiplehardware-implemented artificial neurons within each of the one or moreneuromorphic devices 2570 to cooperate to form and behave as the neuralnetwork 2571. While the use of a software simulation of the neuralnetwork 2571 may beget a neuromorphic implementation of the analyticalfunction that is able to be performed much faster than anon-neuromorphic implementation (e.g., one or more orders of magnitudefaster than a non-neuromorphic implementation), the use ofhardware-based artificial neurons in implementing the neural network2571 may beget a neuromorphic implementation that performs theanalytical function even more quickly (e.g., multiple orders ofmagnitude faster than a non-neuromorphic implementation).

Referring to both FIGS. 24A and 24B, each of the one or more processors2550, regardless of whether it is a CPU or a GPU, is an example ofinstruction-based processing resource, i.e., a processor that executes aseries of instructions to perform a function that those instructionsexplicitly describe the steps for performing. As will be familiar tothose skilled in the art, although such processors are able to executeinstructions to provide a simulation of one or more artificial neurons,this approach scales poorly as the quantity of artificial neurons withina neural network increases. Separate parameters must be maintained foreach artificial neuron that define what is usually unique behavior foreach artificial neuron in terms of when and how to respond to signalsreceived by each artificial neuron. Also, the usually high quantity andcomplexity of connections among the artificial neurons in a neuralnetwork usually means that the firing of one neuron sends signals out tomultiple other neurons, and each of those neurons is usually alsoreceiving signals sent to each of them by still other neurons. Statedmore simply, as the quantity of artificial neurons within a neuralnetwork increases, the complexity of simulating their collectivebehavior as a neural network becomes exponentially more difficult. It isoften not long before the processors employed to execute theinstructions to provide the simulation of the artificial neurons in aneural network become saturated with context switching and repetitiveaccesses to storage to store and retrieve parameter values andindications of the current states of individual artificial neurons.Thus, although such instruction-based processing resources as CPUs andGPUs (as well as other varieties of processing devices that executeinstructions) are able to be used in this manner, doing so can easilybecome at least impractical.

Each of the one or more neuromorphic devices 2570 is an example of aneuromorphic processing resource, i.e., a processing device thatprovides a hardware-based implementation of each artificial neuron,including hardware-based local storage of the parameters that define thebehavior of the artificial neuron so implemented. In contrast toinstruction-based processing resources, such as CPU and/or GPU forms ofeach of the one or more processors 2550, while instruction-basedprocessing resources can be used to execute instructions to perform afunction either with neuromorphic processing (i.e., using asoftware-based implementation of a neural network) or withoutneuromorphic processing (i.e., executing instructions that explicitlydefine steps of a function), neuromorphic processing resources such asthe one or more neuromorphic devices 2570 are usually not capable ofexecuting instructions.

FIG. 24B depicts aspects of example implementations of the neuralnetwork 2571. As again depicted, the neural network 2571 may beimplemented either as a software simulation through the execution of oneor more of the task routines 2440 v or using hardware-based artificialneurons 2577 of the one or more neuromorphic devices 2570. Asadditionally depicted in FIG. 24B, where one or more neuromorphicdevices 2570 are used to implement the neural network 2571, at least oneof the one or more neuromorphic devices 2570 may incorporate a storageinterface 2579 by which the neural network configuration data 2371 maybe provided. Where more than one of the neuromorphic devices 2570 areused, a single one of the neuromorphic devices 2570 may relay some orall of the neural network configuration data 2371 to the others, or eachof the neuromorphic devices 2570 may be directly provided with at leasta portion of the neural network configuration data 2371.

Regardless of whether the neural network 2571 is implemented with theone or more neuromorphic devices 2570 or a software-based simulation, asdepicted, the neural network 2571 may be defined to be a multi-layerfeedforward form of artificial neural network (ANN). In being defined asa multi-layer ANN, the neural network 2571 may be defined as havingmultiple inputs 2572 i and multiple outputs 2572 o between whichnumerous ones of the artificial neurons 2577 are organized into three ormore layers that include an input layer 2573 i, an output layer 2573 o,and at least one hidden layer 2573 h between the input layer 2573 i andthe output layer 2573 o. In being defined as a feedforward ANN, theartificial neurons 2577 may be interconnected with a set of connections2575 that are defined to convey information solely between adjacentlayers 2573 in a direction extending generally from the input layer 2573i and toward the output layer 2573 o, without any connections betweenartificial neurons 2577 that are within the same layer 2573, and withoutany connections that convey information in the reverse directionextending generally from the outputs 2572 o and the output layer 2573 o,and back toward the input layer 2573 i and the inputs 2572 i. Moresimply, all connections among the artificial neurons 2577 are defined asconveying information in the “forward” direction from the inputs 2572 iand the input layer 2573 i, and toward the output layer 2573 o and theoutputs 2572 o, without any “crosstalk” flow of information within anyof the layers 2573, and without any “feedback” flow of information. Sucha configuration of layers 2573 of artificial neurons 2577 and ofconnections 2575 between the layers 2573 is based on observations of themanner in which real neurons appear to interact within the brains ofhuman beings and various animals, and have been used with some degree ofsuccess in mimicking the function of parts of the human brain, includingthe human visual system (HVS) where ANNs have been used to implementvisual recognition systems. However, despite this specific depiction ofthe neural network 2571 as a multi-layer feedforward form of ANN, otherembodiments are possible in which the neural network 2571 may be definedas having a different structure in which the artificial neurons 2577 maybe organized differently and/or in which the connections 2575 may bedefined to extend among the artificial neurons 2577 in a differentconfiguration.

The neural network configuration data 2371 may include varioushyperparameters that define various structural features of the neuralnetwork 2571. By way of example, hyperparameters in the neural networkconfiguration data 2371 may define the neural network 2571 as amulti-layer feedforward form of ANN, may specify the total quantity ofartificial neurons 2577 included therein, may specify the quantity oflayers 2573, may specify which artificial neurons 2577 are connected,and/or the direction in which information is conveyed through thoseconnections 2575.

FIG. 24C depicts aspects of an example internal architecture for theartificial neurons 2577. Again, the neural network 2571 may beimplemented either as a software simulation through the execution of oneor more of the task routines 2440 v or using hardware-based artificialneurons 2577 of the one or more neuromorphic devices 2570. Therefore,accordingly, each of the artificial neurons 2577 may be implemented as asoftware-based simulation or using hardware components.

As depicted, each of the artificial neurons 2577 may incorporatemultiple memristors 2578 (or software-based equivalent simulationsthereof) with each memristor 2578 receiving an input from outside theartificial neuron 2577. Where the depicted artificial neuron 2577 isincorporated into the output layer 2573 o or into a hidden layer 2573 h,each of these inputs may be received from another artificial neuron 2577of another layer 2573. However, where the depicted artificial neuron2577 is incorporated into the input layer 2573 i, each of these inputsmay be one of the external inputs 2572 i to the neural network 2571. Itshould be noted that, where the depicted artificial neuron 2577 isincorporated into the input layer 2573 i, the depicted artificial neuron2577 may alternatively receive just one of the external inputs 2572 i tothe neural network 2571. The neural network configuration data 2371 maydefine weights and/or biases for each memristor 2578 to control suchfactors as what type and/or magnitude of input each memristor 2578responds to and/or the sensitivity of each memristor 2578 to the inputit receives. Alternatively or additionally, the neural networkconfiguration data 2371 may define input patterns that may serve totrigger the depicted artificial neuron 2577, and/or the manner in whicha cumulative quantity, magnitude and/or frequency of input received byeach memristor 2578 may serve to trigger the depicted artificial neuron2577. Regardless of what weights, biases, patterns and/or other inputresponse parameters may be defined for each memristor 2578 within theneural network configuration data 2371, each memristor 2578 may functionat least partially as a memory storage device into which such parametersmay be directly stored. Where each memristor 2578 is implemented as asoftware-based simulation, such local storage of such parameters mayalso be simulated.

As will be familiar to those skilled in the art, the internalarchitecture of artificial neurons is a subject of ongoing research anddevelopment, and so other internal architectures of artificial neuronsare possible. Thus, as additionally depicted in FIG. 24C, the depictedartificial neuron 2577 may employ any of a variety of forms of internallogic to combine, sum or otherwise aggregate the inputs received fromother artificial neurons 2577 or as external input(s) 2572 i to theneural network 2571. As depicted in this example internal architecture,the depicted artificial neuron 2577 may incorporate a relatively simplesummation node to perform such a combining or other aggregation.

As also additionally depicted in FIG. 24C, the depicted artificialneuron 2577 may incorporate still one or more additional memristors 2578(or software-based equivalent simulations thereof), with each suchadditional memristor 2578 providing an output from within the artificialneuron 2577 upon triggering of the artificial neuron. Where the depictedartificial neuron 2577 is incorporated into the input layer 2573 i orinto a hidden layer 2573 h, each of these outputs may be to anotherartificial neuron 2577 of another layer 2573. However, where thedepicted artificial neuron 2577 is incorporated into the output layer2573 o, each of these outputs may be one of the external outputs 2572 ofrom the neural network 2571. It should be noted that, where thedepicted artificial neuron 2577 is incorporated into the output layer2573 i, the depicted artificial neuron 2577 may alternatively providejust one of the external outputs 2572 o of the neural network 2571. Theneural network configuration data 2371 may define such factors as whattype, magnitude, frequency and/or duration of output each suchadditional memristor 2578 may provide when the depicted artificialneuron 2577 is triggered. Again, each such additional memristor 2578 mayfunction at least partially as a memory storage device into which suchparameters may be directly stored.

It should again be noted that the depiction of an internal architecturefor the artificial neurons 2577 is but one example of such anarchitecture, and that other internal architectures are possible inother embodiments. Additionally, the various variations of this depictedarchitecture that have been discussed herein are but a few examples ofsuch variations, and other internal architectures are possible in otherembodiments. By way of example, other internal architectures arepossible that incorporate more or fewer memristors; incorporatealternative components to memristors; incorporate any of a variety ofaggregating, combining and/or summation components; and/or incorporateany of a variety of differing quantities of inputs and outputs.

FIGS. 25A, 25B and 25C, together, illustrate aspects of training aneural network to perform an analytical function as part oftransitioning the implementation of the analytical function from anon-neuromorphic processing implementation to a neuromorphic processingimplementation. More specifically, FIGS. 25A, 25B and 25C illustrate themanner in which data sets associated with performances of an existingnon-neuromorphic implementation of the analytical function may be usedto provide training data to train such a neural network. FIG. 25Aprovides an overall depiction of the manner in which training data maybe provided, FIG. 25B depicts aspects of preparing the neural networkfor training, and FIG. 25C depicts aspects of the performance of suchtraining. For sake of simplicity of reference and understanding, thesame example job flows and components thereof that were introduced inFIGS. 24A-C are used again in this example of training a neural networkto perform an analytical function.

FIG. 25A depicts the provision of training data for use in training theneural network 2571 implemented either by one or more of theneuromorphic devices 2570 or by one or more of the task routines 2440 tto perform the analytical function already being performed in anon-neuromorphic manner in performances of the job flow 2200 x. Morespecifically, the neural network 2571 is trained using training datamade up of matched sets of inputs (e.g., the depicted data set(s) 2330t) and outputs (e.g., the depicted corresponding result report(s) 2770t) of the analytical function to enable the neural network 2571 to learnthe analytical function through inference in a manner often referred toas “supervised learning.” Stated differently, the neural network 2571 ispresented with many example sets of input data and corresponding examplesets output data generated by an existing implementation of theanalytical function that is known to function correctly (e.g., the jobflow 2200 x) to enable the neural network 2571 to learn to perform theanalytical function from those example sets.

Such training of a neural network from such training data is oftenreferred to as creating the “decision space” that defines what responsethe neural network is to provide to each possible input. However, asthose skilled in the art will readily recognize, a neural network thatis trained in such a manner usually performs the function it was trainedto perform with some degree of inaccuracy. At least in theory, a neuralnetwork could be trained to perform a function perfectly if it istrained with training data that includes every possible combination ofinputs and outputs, thereby completely filling the decision space.However, the quantity of every possible combination of inputs andoutputs may simply be so large that it is simply not be possible orpractical to perform such comprehensive training. Thus, the use of aneural network to perform a particular function usually requires anacceptance that training cannot include every possible combination ofinputs and outputs such that not every point within the decision spaceis filled, and thus, there will be some degree of inaccuracy in theperformance of the particular function, at least where an input isencountered for which no corresponding output was provided in thetraining data.

Since training to a degree that begets a perfectly performingneuromorphic implementation of a function may not be possible orpractical, efforts are often made to minimize the degree of inaccuracy.One approach to minimizing inaccuracy may be to use training data thatincludes a large enough quantity of matched sets of inputs and outputsthat are sufficiently varied as achieve coverage of the decision spacethat is thorough and dense enough to at least minimize occurrences ofrelatively large regions within the decision space that are not coveredby any matched set of inputs and outputs in the training data. Asdepicted in FIG. 25A, obtaining such large and thorough training datamay be done by performing a job flow 2200 s in which one or more taskroutines 2440 s may employ one or more data sets 2330 s that specify oneor more parameters for the random generation of sets of input values,thereby generating the data set 2330 t that forms part of the trainingdata. The job flow 2200 x may then be performed such that the taskroutine(s) 2440 x that provide a non-neuromorphic implementation of theanalytical function are used to generate a corresponding set of outputvalues for each set of input values of the data set 2330 t, therebygenerating a corresponding result report 2770 t that also forms part ofthe training data.

However, it should be noted that, depending on the nature of thefunction being performed, there may be one or more sets or ranges ofsets of input values that may be theoretically possible, but which arenot expected to ever actually be encountered while actually using theanalytical function. Thus, there may be one or more regions in thedecision space that need not be covered by the training data as doing somay be deemed to be pointless. One approach to minimizing inaccuracywhile also avoiding generating training data that covers situations thatare expected to never be encountered may be to generate the trainingdata from a subset of the sets of input values actually encounteredduring actual use of the non-neuromorphic implementation of theanalytical function, as well as the sets of output values that aregenerated by that non-neuromorphic implementation from those sets ofinput values. More specifically, as depicted in FIG. 25A, a subset ofthe sets of input values of one or more of the data sets 2330 x and thecorresponding subset of the sets of output values of the correspondingone or more result reports 2770 x may be used to form the data set 2330t and corresponding result report 2770 t, respectively, of trainingdata.

Regardless of the exact manner in which the data set 2330 t and theresult report 2770 t are generated to form training data for thetraining of the neural network 2571, training of the neural network 2571may entail the performance of another job flow in which the neuralnetwork 2571 is instantiated and placed into a training mode, followedby the use of corresponding sets of input and output values of the dataset 2330 t and of the result report 2770 t, respectively, to train theneural network 2571. FIG. 25B depicts aspects of such preparations fortraining the neural network 2571. Specifically, the neural network 2571may be instantiated with an initial form of neural network configurationdata 2371 i that may include at least one set of hyperparameters thatdefine structural aspects of the neural network 2571, as well as variousinitial parameter values that at least place the neural network 2571 ina known initial state in preparation for training. Such a known initialstate may include initial parameters for storage and use by eachmemristor 2578 within each artificial neuron 2577 that is to be includedin the neural network 2571.

FIG. 25C depicts aspects of the training of the neural network 2571following such preparations. More specifically, the data set 2330 t ispresented, one set of input values at a time, to the inputs 2572 i whilecorresponding ones of the sets of output values of the result report2770 t are presented, one set of output values at a time, to the outputs2572 o. As previously discussed, the neural network 2571 may be definedas a multi-layer feedforward ANN in which information flows generally ina single direction therethrough from the inputs 2572 i and the inputlayer 2573 i toward the output layer 2573 o and the outputs 2572 oduring use of the neural network 2571. However, during training of theneural network 2571, as depicted, the outputs 2572 o serve as additionalinputs and information associated with the result report 2770 t alsoflows in the reverse direction from the outputs 2572 o and the outputlayer 2573 o toward the input layer 2573 i in a part of the neuralnetwork training often referred to as “backpropagation.”

Following such training of the neural network 2571, a trained form ofthe neural network configuration data 2371 t may be retrieved from theneural network 2571 and stored in a federated area 2566 as (or as partof) the data set 2370 t. The neural network configuration data 2371 tdefines the neural network 2571 as trained. In addition to a set ofhyperparameters that define structural aspects of the neural network2571 as trained, the neural network configuration data 2371 t mayinclude various trained parameters such as weighting and/or bias values,and/or indications of type, magnitude, duration and/or frequency ofsignals that trigger each artificial neuron 2577 of the neural network2571, as trained. Such storage of the neural network configuration data2371 t within a federated area 2566 may serve to ensure its availablefor subsequent use in performing the analytical function usingneuromorphic processing.

FIGS. 26A and 26B, together, illustrate aspects of performing a stagedtransition from the use of non-neuromorphic processing to neuromorphicprocessing in performing an analytical function. More specifically,FIGS. 26A and 26B illustrate the manner in which different stages oftesting may be used to effect the replacement of a non-neuromorphicimplementation of an analytical function with a neuromorphicimplementation based on degrees of inaccuracy in the performance by theneuromorphic implementation. FIG. 26A provides an overall depiction ofsuch a staged transition in an example where performances are carriedout by one or more federated devices 2500 in a grid 2005 of federateddevices, and FIG. 26B provides an overall depiction of such a stagedtransition in an example where performances are carried out entirelywithin a single federated device 2500. For sake of simplicity ofreference and understanding, some of the same example job flows andcomponents thereof that were introduced in FIGS. 24A-C, and that wereused in FIGS. 25A-C, are used again in these examples.

As depicted in FIG. 26A, one or more federated devices 2500 of a grid2005 of federated devices may be employed in performing thenon-neuromorphic implementation of the analytical function provided bythe job flow 2200 x. Such performances may entail the execution of thetask routine(s) 2440 x of the job flow 2200 x by various differingquantities and/or configurations of one or more processing cores 2555 ofone or more processors 2550 across on or more federated devices 2500. Byway of example, multiple instances of one or more task routine(s) 2440 xmay be executed by thousands of processing course 2555 of a single GPUform of processor 2500 within a single federated device 2500. As will befamiliar to those skilled in the art, a subset of common processingoperations may be quite amenable to being performed in a highlyparallelized manner across the thousands of relatively simple processingcores 2555 that are currently commonly available in GPUs offered by awide variety of vendors. By way of another example, multiple instancesof one or more task routine(s) 2440 x may be executed by one or more ofthe processing course 2555 within each of multiple ones of a CPU form ofprocessor 2500 available within multiple federated devices 2500. As willbe familiar to those skilled in the art, many processing operations areamenable to being performed at least partially in parallel acrossmultiple relatively complex processing cores 2555 that are currentlycommonly available in CPUs offered by a wide variety of vendors.

As will also be familiar to those skilled in the art, an increasingvariety of more recently available GPUs are being provided withprocessing cores that are increasingly optimized for use in supportingthe provision of software-based simulations of neural networks. Indeed,such recent improvements to GPU processing cores now routinely enable asoftware-based simulation of a neural network using a GPU to perform aparticular function multiple orders of magnitude faster than isachievable using multiple CPUs to support an implementation of the sameparticular function in which no neural network is used. However, despitesuch improvements in GPUs, neuromorphic devices that incorporatehardware components to provide hardware-based implementations ofartificial neurons have become more commonplace and have proven capableof supporting neural networks that are able to achieve still greaterperformance. Thus, as depicted in FIG. 26A, it is entirely possible thata single federated device 2500 (of the same grid 2005 of federateddevices) that incorporates one or more GPU forms of processor 2550and/or one or more neuromorphic devices 2570 to provide a neuromorphicimplementation of a particular function that achieves significantlygreater performance than multiple other federated devices 2500 employingmultiple CPU and/or GPU forms of processor 2500 per federated device2500 that provide either a neuromorphic or non-neuromorphicimplementation of that same particular function.

However, despite such opportunities for performance improvements leadingto higher throughput in the performance of a particular function, aspreviously discussed, a tradeoff of incurring some degree of inaccuracyin the performance of that particular function accompanies suchperformance gains. As also previously discussed, various measures may betaken to reduce the degree of inaccuracy. To minimize such inaccuracieswhile effecting a transition from a non-neuromorphic implementation of aparticular function to a neuromorphic implementation, the transition maybe automated in a manner that includes multiple steps that each requirea proven degree of accuracy for the transition to be allowed toprogress. Thus, as depicted, and as will be explained in still greaterdetail, the depicted single federated device 2500 with which theneuromorphic implementation of the analytical function is to beimplemented may be configured to perform each of multiple different jobflows at different stages of the transition. Also, through at least amajority of these stages, there may be at least partially parallelperformances of the non-neuromorphic and neuromorphic implementations ofthe analytical function, with just the neuromorphic implementation beingperformed at a final stage.

More specifically, and as depicted, the job flow 2200 t in whichtraining of the neural network 2571 may be performed (as described inreference to FIGS. 25A-C) within the depicted single federated device2500 at least partially in parallel with the ongoing performance of thenon-neuromorphic implementation by the other multiple depicted federateddevices 2500. An advantage of such at least partially parallelperformance may be that, as more of such non-neuromorphic performancesoccur, more data sets 2330 x and corresponding result reports 2770 x arecreated, thereby providing more matched sets of input values andcorresponding output values that may be used to create more trainingdata (i.e., more data sets 2330 t and corresponding result reports 2770t used to train the neural network 2571). Such training may continue inat least partially in parallel with the non-neuromorphic performances ofthe analytical function until one or more conditions have been reachedfor such training to cease. In various embodiments, such conditions mayinclude one or more of a predetermined quantity of matched sets of inputvalues and output values having been used in training, and/or theresults of a recurring regression analysis on the matched sets of inputvalues and output values so used in training having brought about apredetermined degree of density and/or thoroughness of coverage of thedecision space.

Regardless of the exact conditions that serve as a trigger for theconclusion of performances of the job flow 2200 t to train the neuralnetwork 2571, such conditions may also serve as the trigger for thecommencement of a first stage of testing of the neural network 2571 inwhich the neural network 2571 may be operated to perform the analyticalfunction at least partially in parallel with the continuing performancesof the non-neuromorphic implementation of the analytical functionprovided by the job flow 2500 x. More specifically, with eachperformance of the job flow 2200 x by the depicted multiple federateddevices 2500 with sets of input values of the data set 2330 x, acorresponding performance of the job flow 2200 u may be performed withat least a subset of the data set 2330 x (i.e., the data set 2330 u). Aspart of each such performance of the job flow 2200 u, the output valuesgenerated from the subset of input sets that are performed using bothjob flows 2200 x and 2200 u may be compared to test the accuracy of theneural network 2571.

If such testing reveals that the neural network 2571 is achieving adegree of accuracy that is less than a predetermined minimum thresholdof accuracy for testing to continue, then further performances of thejob flow 2200 u to test the neural network 2571 may cease, andperformances of the job flow 2200 t to retrain the neural network 2571may occur. Further, such retraining may be performed using a differentselection of hyperparameters than were used in the previous performancesof the job flow 2200 t to train the neural network 2571. As thoseskilled in the art will readily recognize, different structuralconfigurations of a neural network that include differing quantities ofartificial neurons and/or different quantities of layers may perform aparticular function with differing degrees of accuracy. Thus, a changein the hyperparameters during a retraining of the neural network 2571may beget improved accuracy.

However, if the testing of the performances of the job flow 2200 ureveals that the neural network 2571 is achieving a degree of accuracythat is greater than the predetermined minimal threshold for testing tocontinue, but is less than a predetermined higher threshold of accuracyfor usage to begin, then further performances of the job flow 2200 u mayoccur in which further training of the neural network 2571 thatmaintains its current hyperparameters, and that serves to refine theneural network 2571, rather than to restart the training from thebeginning with different hyperparameters. Once such further training hasbeen completed, further performances of the job flow 2200 u may occur inwhich the earlier testing of the neural network 2571 is resumed to againassess the degree of accuracy.

If the testing or resumed testing of the performances of the job flow2200 u reveals that the neural network 2571 is achieving a degree ofaccuracy that is greater than the predetermined higher threshold ofaccuracy for usage to begin, then conditions of the at least partiallyparallel performances of non-neuromorphic and neuromorphicimplementations of the analytical function may change such that theneuromorphic implementation begins to replace the non-neuromorphicimplementation, and the non-neuromorphic implementation is relegated tobeing used to spot check the output of the neuromorphic implementation.More specifically, and presuming that the neuromorphic implementation isable to achieve higher throughput than the non-neuromorphicimplementation, a job flow 2200 v may begin to be performed with allsets of input values of the data sets 2330 x to generate allcorresponding sets of output values of the results reports 2770 x. And,at least partially in parallel with the performances of the job flow2200 v, the job flow 2200 x based on the presumably slower performingnon-neuromorphic implementation may be performed with a subset of thesets of input values of the data sets 2330 x, and the outputs of theseperformances of the job flow 2200 x may be compared to correspondingoutputs of the job flow 2200 v as part of a final stage of testing ofthe neural network 2571.

If such further testing reveals that the degree of accuracy of theneural network 2571 continues to be greater than the higher threshold ofaccuracy for a predetermined amount of such further testing, then thefurther performances of the job flow 2200 x as part of such furthertesting may cease. In some embodiments, such a cessation of performancesof the job flow 2200 x may be caused to occur in a gradual manner inwhich the performances of the job flow 2200 x become less frequent asthe degree of accuracy continues to be greater than the higher thresholdsuch that the allocation of processing resources of the grid 2005 offederated devices 2500 is gradually reduced over that time. In some ofsuch embodiments, such a gradual transition may be implemented byprioritizing the assignment of processing resources between thenon-neuromorphic and neuromorphic implementations.

By way of example, initially, the non-neuromorphic implementation may beprovisioned with whatever processing resources to a degree intended toensure that there are sufficient processing resources to perform thenon-neuromorphic implementation in a manner that meets or exceeds apredetermined throughput level or other measurement of performance.Whatever remains in the way of processing resources, if sufficient tofully implement the neural network of the neuromorphic implementation,may then be allocated to the neuromorphic implementation. However, asthe transition is made to using the neuromorphic implementation (e.g.,as a result of the degree accuracy exceeding the higher threshold ofaccuracy), the neuromorphic implementation may then be given priority inthe allocation of processing resources over the non-neuromorphicimplementation. It should be noted that, where neuromorphic processingresources (e.g., the one or more neuromorphic devices 2570) areavailable alongside instruction-based processing resources (e.g., theone or more processors 2550), the neuromorphic implementation may proveto have an advantage in being allocated processing resources. This mayarise from the fact that a neural network can be implemented usingeither instruction-based or neuromorphic processing resources, while theexecution of a series of instructions to perform a function in anon-neuromorphic manner (i.e., in a manner not using a neural network),must be performed using instruction-based processing resources.

FIG. 26B depicts aspects of a similar multiple-stage transition, butconducted entirely within a single federated device 2500. Morespecifically, in some embodiments, it may be that the one or moreprocessors 2500 (whether of CPU or GPU form) are employed inperformances of the non-neuromorphic implementation that is transitionedfrom while the one or more neuromorphic devices 2570 are employed inperformances of the neuromorphic implementation that is transitioned to.Alternatively, in other embodiments it may be that the neuromorphicimplementation is performed employing numerous processing cores 2555 ofa GPU form of at least one processor 2550. It should be noted that,beyond such differences between FIGS. 26A and 26B in the quantities offederated devices 2500 and/or the components thereof that are involvedin these performances, what is otherwise depicted in FIGS. 26A and 26Bis substantially similar.

FIGS. 27A, 27B, 27C, 27D, 27E, 27F, 27G and 27H, together, illustrate ingreater detail another example of automated exchanges of objectsassociated with the training and testing of a neural network amongdifferent federated areas as various stages of the training and testingare begun and/or are completed. For sake of ease of discussion andunderstanding, the same hierarchical tree introduced in FIGS. 23A-E isused again in FIGS. 27A-H. Similar to what was depicted in FIGS. 23A-E,an automatic transfer relationship may be defined in the transfer flowdefinition 2620 tuv among the intervening federated areas 2566 t, 2566 uand 2566 v in which copies of various objects may be transferreddepending on various conditions. Again, this example automatic transferrelationship and associated conditions are deliberately simplified forpurposes of illustration, and should not be taken as limiting what isdescribed and claimed herein to such relatively simple embodiments.

It may be that this example of an automatic transfer relationship amongthe intervening federated areas 2566 t, 2566 u and 2566 v was created aspart of implementing aspects of the provision of training data describedin reference to FIG. 25, as well as aspects of the staged transitionfrom the use of a non-neuromorphic implementation of an analyticalfunction to a neuromorphic implementation described in reference toFIGS. 26A-B. Through this example automatic transfer relationship, usershaving access to different ones of these intervening federated areas maybe able to collaborate as such a staged development of a neural networkautomatically proceeds. More specifically, users with access to theintervening federated area 2566 t may oversee the training and/orretraining of the neural network 2571 performed at least partly withinthe intervening federated area 2566 t. Also, users with access to theintervening federated area 2566 u may subsequently oversee the testingof the neural network 2571 performed at least partly within theintervening federated area 2566 u. Further, users with access to theintervening federated area 2566 v may subsequently oversee the usage ofthe neural network 2571 performed at least partly within the interveningfederated area 2566 v.

Turning to FIG. 27A, a user with access to the private federated area2566 m or 2566 n may generate the data set 2330 t and the correspondingresult report 2770 t from the data set 2330 x and the result report 2770x, respectively, that may be stored within the base federated area 2566x as a result of earlier performances of the non-neuromorphicimplementation of the analytical function of the job flow 2200 x. Asdiscussed in reference to FIG. 25A, the data set 2330 t and thecorresponding result report 2770 t may, together, form training datathat includes multiple matched sets of input values and output values bywhich the neural network 2571 may be trained to perform the analyticalfunction. Again, any of a variety of approaches may be used in selectingwhich sets of input values and corresponding output values from the dataset 2330 x and the result report 2770 x, respectively, are to beincluded in the training data, including random sampling in which theremay be some degree of emphasizing and/or de-emphasizing variouscharacteristics.

Alternatively, and turning to FIG. 27B, either in lieu of, or inaddition to, such use of the data set 2330 x and the correspondingresult report 2770 x, at least a subset of the sets of input valueswithin the data set 2330 t may be randomly generated throughperformance(s) of the job flow 2200 s introduced in FIG. 15A. Again,following such random generation of sets of input data, the job flow2200 x may then be performed at least partly within the interveningfederated area 2566 t to use the non-neuromorphic implementation of theanalytical function thereof to generate corresponding sets of outputvalues of the result report 2770 t.

Turning to FIG. 27C, with the data set 2330 t and corresponding resultreport 2770 t generated (regardless of the exact manner in which theyare generated) and stored within the intervening federated area 2566 t,the job flow 2200 t may be performed to train the neural network 2571 asdescribed in reference to FIGS. 25A-C, using the data set 2330 t andcorresponding result report 2770 t as the training data.

As the job flow 2200 t is performed to effect such training, executionof the transfer routine 2640 t at least partially in parallel with thetask routines 2440(t) of the job flow 2200 t may cause a processor 2550to perform a recurring analysis of one or more aspects of the trainingof the neural network 2571 to determine whether a condition has been metto cease the training and to begin the testing of the neural network2571. Again, such a condition may include a determination that apredetermined threshold quantity of matched sets of input values andoutput values has been used in training the neural network 2571, or thatthe matched sets of input values and output values are sufficientlyvaried as to ensure that the resulting decision space of the neuralnetwork 2571 is sufficiently defined.

As also depicted in FIG. 27C, and as previously discussed in referenceto FIGS. 17A-F, the job flow definition 2220 t may include the job flowidentifier or other form of reference to the job flow 2200 x and/or thejob flow definition 2220 x that serves as an indication of the neuralnetwork 2571 having been derived, to at least some degree, from the jobflow 2200 x and/or performance(s) thereof. Again, this may serve as anaid to ensuring accountability for various aspects of the development ofthe neural network 2571 at a later time when the neural network 2571might be evaluated.

Turning to FIG. 27D, in preparation for the testing of neural network2571, a user with access to the private federated area 2566 p or 2566 qmay generate the data set 2330 u and the corresponding result report2770 u for use in performing such testing from the data set 2330 x andthe result report 2770 x, respectively, generated during earlierperformances of the job flow 2200 x. Alternatively, as also discussed inreference to FIGS. 26A-B, the data set 2330 u and the result report 2770u may be generated from the data set 2330 x and the result report 2770x, respectively, as matched sets of input values and output values inthe data set 2330 x and the result report 2770 x, respectively, arebeing generated in performances of the job flow 2200 x that may becaused to occur at least partially in parallel with performances of thejob flow 2200 u to test the neural network 2571.

Turning to FIG. 27E, in response to a determination made, as a result ofexecution of the transfer routine 2640 t, that a condition has been metfor the cessation of training and the commencement of testing, atransfer of the neural network configuration data 2371 t may beperformed between the intervening federated areas 2566 t and 2566 uthrough the transfer area 2666 tu. As previously described in referenceto FIGS. 25B-C, the configuration data 2371 t may includehyperparameters and trained parameters that provide a definition of theneural network 2571 as trained as a result of performance(s) of the jobflow 2200 t.

Turning to FIG. 27F, with the data set 2330 u and corresponding resultreport 2770 u either having already been generated or being generated onan ongoing basis as the job flow 2200 x continues to be performed, thejob flow 2200 u may be performed to test the neural network 2571 asdescribed in reference to FIGS. 26A-B, using the data set 2330 u andcorresponding result report 2770 u as testing data.

As the job flow 2200 u is performed to effect such testing, execution ofthe transfer routine 2640 u at least partially in parallel with the taskroutine(s) 2440 u of the job flow 2200 u may cause a processor 2550 toperform a recurring analysis of one or more aspects of the testing ofthe neural network 2571 to determine whether a condition has been met tocease the testing and to either begin retraining the neural network 2571or begin usage of the neural network 2571. Again, such a condition maythe degree of accuracy of the neural network 2571 in performing theanalytical function as determined through analyses of output values ofthe job flows 2200 u and 2200 x.

As also depicted in FIG. 27F, and as previously discussed in referenceto FIGS. 17A-F, the job flow definition 2220 u may include the job flowidentifier or other form of reference to the job flow 2200 x and/or thejob flow definition 2220 x that serves as an indication of the job flow2200 x and/or performance(s) thereof having been used to test the neuralnetwork 2571. Again, this may serve as an aid to ensuring accountabilityfor various aspects of the testing of the neural network 2571.

Turning to FIG. 27G, in response to a determination made, as a result ofexecution of the transfer routine 2640 u, that a condition has been metfor the cessation of testing and the commencement of retraining, atransfer of the result report 2770 u, and/or another data objectindicative of the degree of accuracy of the neural network 2571 (and/orindicative of instances where the neural network 2571 has providedinaccurate output) may be performed between the intervening federatedareas 2566 u and 2566 t back through the transfer area 2666 tu. Aspreviously described in reference to FIGS. 26A-B, such retraining of theneural network 2571 may entail the use of different hyperparameters inan effort to cause the retrained neural network 2571 to be moreaccurate.

Alternatively, and turning to FIG. 27H, in response to a determinationmade, as a result of execution of the transfer routine 2640 u, that acondition has been met for the cessation of testing and the commencementof usage of the neural network 2571, a transfer of the data set 2370 tthat defines the neural network (or of a different data object thatdefines a refined version of the neural network 2571) may be performedbetween the intervening federated areas 2566 u and 2566 v through thetransfer area 2666 uv. As previously described in reference to FIGS.26A-B, such usage of the neural network 2571 may, at least initially,entail performances of the job flow 2200 v to use the neural network2571 at least partially in parallel with performances of the job flow2200 x to perform some degree of ongoing checks of the accuracy of theneural network 2571 in performing the analytical function.

FIGS. 28A, 28B, 28C, 28D, 28E and 28F, together, illustrate an exampleembodiment of a logic flow 3100. The logic flow 3100 may berepresentative of some or all of the operations executed by one or moreembodiments described herein. More specifically, the logic flow 3100 mayillustrate operations performed by the processor(s) 2550 in executingthe control routine 2540, and/or performed by other component(s) of atleast one of the federated devices 2500.

At 3110, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may receive arequest from a device, via a network (e.g., one of the source devices2100, or one of the reviewing devices 2800, via the network 2999) andthrough a portal provided by the processor for access to other devicesvia the network, to store one or more objects (e.g., one or more of theobjects 2220, 2270, 2330, 2370, 2440, 2470, 2720 and/or 2770) within aspecified federated area (e.g., one of the federated areas 2566). As hasbeen discussed, such a portal may employ any of a variety of protocolsand/or handshake mechanisms to enable the receipt of requests forvarious forms of access to a federated area by other devices, as well asto exchange objects with other devices, via the network.

At 3112, in embodiments in which the federated device(s) that providefederated area(s) also control access thereto, the processor may performa check of whether the request is from an authorized device and/or froman authorized person or entity (e.g., scholastic, governmental orbusiness entity) operating the device that is an authorized user of thespecified federated area, and/or has been granted a level of access thatincludes the authorization to make such requests. As has been discussed,the processor may require the receipt of one or more securitycredentials from devices from which requests are received. If, at 3112,the processor determines that the request is not from a device and/oruser authorized to make such a request, then the processor may transmitan indication of denial of the request to the device via the network at3114.

However, if at 3112, the processor determines that the request to storeone or more objects within the specified federated area is authorized,then at 3120, the processor may check whether the one or more objectsincludes one or more data sets (e.g., one or more of the data sets 2330or 2370). If so, then the processor may generate and assign a dataobject identifier for each data set that is to be stored (e.g., one ormore of the data object identifiers 3331) at 3122. At 3124, theprocessor may store each of the one or more data sets within thespecified federated area.

At 3130, the processor may check whether the one or more objectsincludes one or more result reports (e.g., one or more of the resultreports 2770). If so, then the processor may generate and assign aresult report identifier for each result report that is to be stored(e.g., one or more of the result report identifiers 2771) at 3132. At3134, the processor may store each of the one or more result reportswithin the specified federated area.

At 3140, the processor may check whether the one or more objectsincludes one or more task routines (e.g., one or more of the taskroutines 2440). If so, then the processor may generate and assign a taskroutine identifier for each task routine that is to be stored (e.g., oneor more of the task routine identifiers 2441) at 3142. At 3144, theprocessor may store each of the one or more task routines within thespecified federated area. At 3146, the processor may additionally checkwhether any of the task routines stored at 3144 have the same flow taskidentifier as another task routine that was already stored within thespecified federated area (or within any base federated area to which thespecified federated area is related and/or within any interveningfederated area interposed therebetween), such that there is more thanone task routine executable to perform the same task. If so, then at3148 for each newly stored task routine that shares a flow taskidentifier with at least one other task routine already stored in thespecified federated area (or within such a base or intervening federatedarea), the processor may store an indication of there being multipletask routines with the same flow task identifier, along with anindication of which is the most recent of the task routines for thatflow task identifier.

As has been discussed, in embodiments in which task routines are storedin a manner organized into a database or other data structure (e.g., thetask routine database 2564 within one or more related federated areas)by which flow task identifiers may be employed as a mechanism to locatetask routines, the storage of an indication of there being more than onetask routine sharing the same flow task identifier may entailassociating more than one task routine with the same flow taskidentifier so that a subsequent search for task routines using that flowtask identifier will beget a result indicating that there is more thanone. As has also been discussed, the manner in which one of multipletask routines sharing the same flow task identifier may be indicated asbeing the most current version may entail ordering the manner in whichthose task routines are listed within the database (or other datastructure) to cause the most current one to be listed at a particularposition within that order (e.g., listed first).

At 3150, the processor may check whether the one or more objectsincludes one or more macros (e.g., one or more of the macros 2470). Ifso, then at 3152, the processor may additionally check, for each macro,whether there is a corresponding task routine (or corresponding multipleversions of a task routine in embodiments in which a single macro may bebased on multiple versions) stored within the specified federated area(or within any base federated area to which the specified federated areais related and/or within any intervening federated area interposedtherebetween). If, at 3152, there are any macros requested to be storedfor which there is a corresponding task routine (or correspondingmultiple versions of a task routine) stored in the specified federatedarea (or within such a base or intervening federated area), then foreach such macro, the processor may assign the job flow identifier (e.g.,one or more of the job flow identifiers 2221) of the corresponding taskroutine (or may assign job flow identifiers of each of the versions of atask routine) at 3154. At 3156, the processor may store each of suchmacros.

At 3160, the processor may check whether the one or more objectsincludes one or more job flow definitions (e.g., one or more of the jobflow definitions 2220). If so, then at 3162, the processor mayadditionally check, for each job flow definition, whether that job flowdefinition defines a job flow that uses a neural network and was trainedand/or tested using objects associated with another job flow (and/orperformances thereof) that is defined to by its job flow definition tonot use a neural network. As previously discussed, the preservation ofsuch links between a neuromorphic job flow and an earliernon-neuromorphic job flow from which the neuromorphic job flow may be insome way derived may be of importance to ensuring accountability duringa later evaluation of the neuromorphic job flow. For this reason, it maybe deemed important to ensure that objects associated with the othernon-neuromorphic job flow have already been stored in federated area(s)where they can be preserved for subsequent retrieval during such anevaluation of the neuromorphic job flow.

Presuming that there are no neuromorphic job flows requested to bestored that were derived from another non-neuromorphic job flow that isnot already so stored, then at 3164, the processor may additionallycheck, for each job flow definition, whether there is at least one taskroutine stored within the specified federated area (or within any basefederated area to which the specified federated area is related and/orwithin any intervening federated area interposed therebetween) for eachtask specified by a flow task identifier within the job flow definition.If, at 3164, there are any job flow definitions requested to be storedfor which there is at least one task routine stored in the specifiedfederated area (or within such a base or intervening federated area) foreach task, then for each of those job flow definitions where there is atleast one stored task routine for each task, the processor may generateand assign a job flow identifier (e.g., one or more of the job flowidentifiers 2221) at 3166. At 3168, the processor may store each of theone or more job flow definitions for which there was at least one taskroutine for each task.

At 3170, the processor may check whether the one or more objectsincludes one or more instance logs (e.g., one or more of the instancelogs 2720). If so, then at 3172, the processor may additionally check,for each instance log, whether each object identified in the instancelog by its identifier is stored within the specified federated area (orwithin any base federated area to which the specified federated area isrelated and/or within any intervening federated area interposedtherebetween). If, at 3172, there are any instance logs requested to bestored for which each specified object is stored within the specifiedfederated area (or within such a base or intervening federated area),then for each instance log where each object specified therein is sostored, the processor may generate and assign an instance log identifier(e.g., one or more of the instance log identifiers 2721) at 3174. At3176, the processor may store each of the one or more instance logs forwhich each specified object is so stored.

At 3180, the processor may check whether the one or more objectsincludes one or DAGs (e.g., one or more of the job DAGs 2270). If so,then at 3182, the processor may additionally check, for each DAG,whether there is a corresponding task routine (or corresponding multipleversions of a task routine) for each task graph object (e.g., one of thetask graph objects 2984) and whether there is a corresponding dataobject for each data graph object (e.g., each data graph object 2983 or2987) stored within the specified federated area (or within any basefederated area to which the specified federated area is related and/orwithin any intervening federated area interposed therebetween). If, at3182, there are any of such DAGs to be stored in the specified federatedarea (or within such a base or intervening federated area) for eachtask, then for each of such DAG, the processor may generate and assign ajob flow identifier at 3184 in recognition of the possibility that sucha DAG may be used as a new job flow definition. At 3186, the processormay store each of such DAGs.

FIGS. 29A and 29B, together, illustrate an example embodiment of a logicflow 3200. The logic flow 3200 may be representative of some or all ofthe operations executed by one or more embodiments described herein.More specifically, the logic flow 3200 may illustrate operationsperformed by the processor(s) 2550 in executing the control routine2540, and/or performed by other component(s) of at least one of thefederated devices 2500.

At 3210, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may receive arequest from a device, via a network (e.g., one of the source devices2100, or one of the reviewing devices 2800, via the network 2999) andthrough a portal provided by the processor for access to other devicesvia the network, to store a task routine (e.g., one of the task routines2440) within a specified federated area (e.g., one of the federatedareas 2566). Again, such a portal may be generated by the processor toemploy any of a variety of protocols and/or handshake mechanisms toenable the receipt of requests for various forms of access to thefederated area by other devices, as well as to exchange objects withother devices, via the network.

At 3212, in embodiments in which the federated device(s) that providefederated area(s) also control access thereto, the processor may performa check of whether the request is from an authorized device and/or froman authorized person or entity (e.g., scholastic, governmental orbusiness entity) operating the device that is an authorized user of thespecified federated area, and/or has been granted a level of access thatincludes the authorization to make such requests. As has been discussed,the processor may require the receipt of one or more securitycredentials from devices from which requests are received. If, at 3212,the processor determines that the request is not from a device and/oruser authorized to make such a request, then the processor may transmitan indication of denial of the request to the device via the network at3214.

However, if at 3212, the processor determines that the request to storea task routine within the specified federated area is authorized, thenat 3220, the processor may check whether the task routine has the sameflow task identifier as any of the task routines already stored withinthe specified federated area (or within any base federated area to whichthe specified federated area is related and/or within any interveningfederated area interposed therebetween), such that there is alreadystored one or more other task routines executable to perform the sametask. If not at 3220, then the processor may generate and assign a taskroutine identifier for the task routine (e.g., one of the task routineidentifiers 2441) at 3222. At 3224, the processor may store the taskroutines within the specified federated area in a manner that enableslater retrieval of the task routine by either its identifier or by theflow task identifier of the task that it performs.

However, if at 3220, there is at least one other task routine with thesame flow task identifier already stored within the specified federatedarea (or within such a base or intervening federated area), then theprocessor may check at 3230 whether the input interfaces (e.g., datainterfaces 2443 that receive data from data objects, and/or taskinterfaces 2444 that receive parameters from another task routine) areimplemented in the task routine in a manner that is identical to thoseof the one or more task routines with the same flow task identifier thatare already so stored. Alternatively, and as previously discussed, sucha comparison may be made between the implementation of the inputinterfaces of the task routine and the specifications for the inputinterfaces within one or more job flow definitions that include the taskperformed by the task routine. If, at 3230, the input interfaces are notidentical, then the processor may transmit a denial of the request tothe device via the network at 3214.

However, if at 3230, the input interfaces are identical, then theprocessor may check at 3240 whether the output interfaces (e.g., datainterfaces 2443 that output a data object, and/or task interfaces 2444that output parameters to another task routine) are implemented in thetask routine in a manner that is either identical to or a superset ofthose of the one or more task routines with the same flow taskidentifier that are already stored within the federated area (or withinsuch a base or intervening federated area). Alternatively, and aspreviously discussed, such a comparison may be made between theimplementation of the output interfaces of the task routine and thespecifications for the output interfaces within one or more job flowdefinitions that include the task performed by the task routine. If, at3240, each of the output interfaces of the task routine are neitheridentical nor a superset, then the processor may transmit a denial ofthe request to the device via the network at 3214.

However, if at 3240, each of the output interfaces of the task routineis identical to or a superset of the corresponding output interfacewithin other task routine(s) and/or job flow definitions already storedwithin the federated area (or within such a base or interveningfederated area), then the processor may generate and assign a taskroutine identifier for the task routine at 3242. At 3244, the processormay store the task routine within the specified federated area in amanner that enables later retrieval of the task routine by either itsidentifier or by the flow task identifier of the task that it performs.At 3246, the processor may also store an indication of there beingmultiple task routines with the same flow task identifier, along with anindication of which is the most recent of the task routines for thatflow task identifier.

FIGS. 30A and 30B, together, illustrate an example embodiment of a logicflow 3300. The logic flow 3300 may be representative of some or all ofthe operations executed by one or more embodiments described herein.More specifically, the logic flow 3300 may illustrate operationsperformed by the processor(s) 2550 in executing the control routine2540, and/or performed by other component(s) of at least one of thefederated devices 2500.

At 3310, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may receive arequest from a device, via a network (e.g., one of the source devices2100, or one of the reviewing devices 2800, via the network 2999) andthrough a portal provided by the processor for access to other devicesvia the network, to store a job flow definition (e.g., one of the jobflow definitions 2220) within a specified federated area (e.g., one ofthe federated areas 2566).

At 3312, in embodiments in which the federated device(s) that providefederated area(s) also control access thereto, the processor may performa check of whether the request is from an authorized device and/or froman authorized person or entity (e.g., scholastic, governmental orbusiness entity) operating the device that is an authorized user of thespecified federated area, and/or has been granted a level of access thatincludes the authorization to make such requests. As has been discussed,the processor may require the receipt of one or more securitycredentials from devices from which requests are received. If, at 3312,the processor determines that the request is not from a device and/oruser authorized to make such a request, then the processor may transmitan indication of denial of the request to the device via the network at3314.

However, if at 3312, the processor determines that the request to storea job flow definition within the specified federated area is authorized,then at 3320, the processor may check whether the job flow of the jobflow definition uses a neural network that was trained based on anotherjob flow that does not use a neural network. If so, then at 3322, theprocessor may check whether at least the job flow definition of theother job flow is stored within the federated area (or within any basefederated area to which the specified federated area is related and/orwithin any intervening federated area interposed therebetween), and ifnot, may then transmit an indication of denial of the request at 3314.

However, if at 3320, the processor determines that the job flow of thejob flow definition does not use a neural network, or if at 3322, theprocessor determines that the other job flow definition is so stored,then at 3330, the processor may check whether there is at least one taskroutine stored within the federated area (or within any base federatedarea to which the specified federated area is related and/or within anyintervening federated area interposed therebetween) for each taskspecified by a flow task identifier within the job flow definition. If,at 3330, there are no task routines stored within the federated area (orwithin such a base or intervening federated area) for one or more of thetasks specified by the job flow, then the processor may transmit adenial of the request to the device via the network at 3314.

However, if at 3330, there is at least one task routine stored in thefederated area (or within such a base or intervening federated area) foreach task specified in the job flow, then the processor may checkwhether the input interfaces (e.g., data interfaces 2443 that receivedata from data objects, and/or task interfaces 2444 that receiveparameters from another task routine) that are implemented in the taskroutines stored in the federated area (or within such a base orintervening federated area) are identical to those specified in the jobflow definition at 3340. If, at 3340, the input interfaces are notidentical, then the processor may transmit a denial of the request tothe device via the network at 3342.

However, if at 3340, the input interfaces are identical, then theprocessor may check at 3350 whether the output interfaces (e.g., datainterfaces 2443 that output a data object, and/or task interfaces 2444that output parameters to another task routine) that are implemented inthe task routines that are already stored within the federated area (orwithin such a base or intervening federated area) are identical to orare supersets of those specified in the job flow definition. If, at3350, an output interface of one or more of the task routines already sostored is neither identical nor a superset of a corresponding outputinterface specified in the job flow definition, then the processor maytransmit a denial of the request to the source device via the network at3342.

However, if at 3350, all of the output interfaces of all of the taskroutines already so stored are either identical to and/or are supersetsof corresponding output interfaces specified in the job flowdefinitions, then the processor may generate and assign a job flowidentifier for the task routine at 3352. At 3354, the processor maystore the job flow within the specified federated area in a manner thatenables later retrieval of the job flow by its identifier.

FIGS. 31A, 31B, 31C and 31D, together, illustrate an example embodimentof a logic flow 3400. The logic flow 3400 may be representative of someor all of the operations executed by one or more embodiments describedherein. More specifically, the logic flow 3400 may illustrate operationsperformed by the processor(s) 2550 in executing the control routine2540, and/or performed by other component(s) of at least one of thefederated devices 2500.

At 3410, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may receive arequest from a device, via a network (e.g., one of the source devices2100, or one of the reviewing devices 2800, via the network 2999) andthrough a portal provided by the processor, to delete one or moreobjects (e.g., one or more of the objects 2220, 2330, 2370, 2440, 2720and/or 2770) within a specified federated area (e.g., one of thefederated areas 2566).

At 3412, in embodiments in which the federated device(s) that providefederated area(s) also control access thereto, the processor may performa check of whether the request is from an authorized device and/or froman authorized person or entity (e.g., scholastic, governmental orbusiness entity) operating the device that is an authorized user of thespecified federated area, as well as any federated area that may branchfrom the specified federated area, and/or has been granted a level ofaccess that includes the authorization to make such requests. As hasbeen discussed, the processor may require the receipt of one or moresecurity credentials from devices from which requests are received. If,at 3412, the processor determines that the request is not from a deviceand/or user authorized to make such a request, then the processor maytransmit an indication of denial of the request to the device via thenetwork at 3414.

However, if at 3412, the processor determines that the request to deleteone or more objects within the specified federated area is authorized,then at 3420, the processor may check whether the one or more objectsincludes one or more data sets (e.g., one or more of the data sets 2330or 2370). If so, then the processor may delete the one or more data setsfrom the specified federated area at 3422. At 3424, the processor mayadditionally check whether there are any result reports or instance logsstored in the specified federated area (or within any federated areathat branches from the specified federated area) that were generated ina past performance of a job flow in which any of the one or more deleteddata sets were used. If so, then at 3426, the processor may delete suchresult report(s) and/or instance log(s) from the specified federatedarea and/or from one or more other federated areas that branch from thespecified federated area.

As previously discussed, it may be deemed desirable for reasons ofmaintaining repeatability to avoid a situation in which there is aninstance log that specifies one or more objects, such as data sets, asbeing associated with a performance of a job flow where the one or moreobjects are not present within any accessible federated area such thatthe performance of the job flow cannot be repeated. It is for thisreason that the deletion of a data set from the specified federated areais only to be performed if a check can be made within federated areasthat branch from the specified federated area for such objects asinstance logs and/or result reports that have such a dependency on thedata set to be deleted. And, it is for this reason that a request forsuch a deletion may not be deemed to be authorized unless received froma device and/or user that has authorization to access all of thefederated areas that branch from the specified federated area.

At 3430, the processor may check whether the one or more objectsincludes one or more result reports (e.g., one or more of the resultreports 2770). If so, then the processor may delete the one or moreresult reports from the specified federated area at 3432. At 3434, theprocessor may additionally check whether there are any instance logsstored in the specified federated area (or within any federated areathat branches from the specified federated area) that were generated ina past performance of a job flow in which any of the one or more deletedresult reports were generated. If so, then at 3436, the processor maydelete such instance log(s) from the federated area and/or from the oneor more other federated areas that branch from the specified federatedarea.

At 3440, the processor may check whether the one or more objectsincludes one or more task routines (e.g., one or more of the taskroutines 2440). If so, then the processor may delete the one or moretask routines from the specified federated area at 3442. At 3444, theprocessor may additionally check whether there are any other taskroutines stored in the specified federated area (or within a federatedarea that branches from the specified federated area) that share thesame flow task identifier(s) as any of the deleted task routines. If so,then at 3446, the processor may delete such task routine(s) from thespecified federated area and/or from the one or more other federatedareas that branch from the specified federated area. At 3450, theprocessor may additionally check whether there are any result reports orinstance logs stored in the specified federated area (or within afederated area that branches from the specified federated area) thatwere generated in a past performance of a job flow in which any of theone or more deleted task routines were used. If so, then at 3452, theprocessor may delete such result report(s) and/or instance log(s) fromthe specified federated area and/or from the one or more other federatedareas that branch from the specified federated area.

At 3460, the processor may check whether the one or more objectsincludes one or more job flow definitions (e.g., one or more of the jobflow definitions 2220). If so, then at 3462, the processor may deletethe one or more job flow definitions within the specified federatedarea. At 3464, the processor may additionally check whether there areany result reports or instance logs stored in the specified federatedarea (or within a federated area that branches from the specifiedfederated area) that were generated in a past performance of a job flowdefined by any of the one or more deleted job flow definitions. If so,then at 3466, the processor may delete such result report(s) and/orinstance log(s) from the federated area and/or from the one or moreother federated areas that branch from the specified federated area.

At 3470, the processor may check whether the one or more objectsincludes one or more instance logs (e.g., one or more of the instancelogs 2720). If so, then at 3472, the processor may delete the one ormore instance logs from the specified federated area.

FIGS. 32A and 32B, together, illustrate an example embodiment of a logicflow 3500. The logic flow 3500 may be representative of some or all ofthe operations executed by one or more embodiments described herein.More specifically, the logic flow 3500 may illustrate operationsperformed by the processor(s) 2550 in executing the control routine2540, and/or performed by other component(s) of at least one of thefederated devices 2500.

At 3510, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may receive arequest from a device, via a network (e.g., one of the reviewing devices2800 via the network 2999) and through a portal provided by theprocessor, to repeat a previous performance of a job flow that generatedeither a result report or an instance log (e.g., one of the resultreports 2770 or one of the instance logs 2720) specified in the request(e.g., with a result report identifier 2771 or an instance logidentifier 2721), or to provide the device with the objects (e.g., oneor more of the objects 2220, 2330, 2370, 2440, 2720 and/or 2770) neededto enable the requesting device to do so. As previously discussed,persons and/or entities involved in peer reviewing and/or other forms ofreview of analyses may operate a device to make a request for one ormore federated devices to repeat a performance of a job flow to verifyan earlier performance, or may make a request for the objects needed toallow the persons and/or entities to independently repeat theperformance.

At 3512, in embodiments in which the federated device(s) that providefederated area(s) also control access thereto, the processor may performa check of whether the request is from an authorized device and/or froman authorized person or entity (e.g., scholastic, governmental orbusiness entity) operating the device that is an authorized user of atleast one federated area, and/or has been granted a level of access thatincludes the authorization to make such requests. As has been discussed,the processor may require the receipt of one or more securitycredentials from devices from which requests are received. If, at 3512,the processor determines that the request is not from a device and/oruser authorized to make such a request, then the processor may transmitan indication of denial of the request to the device via the network at3514.

However, if at 3512, the processor determines that the request eitherfor a result report regenerated from a repeat performance of a job flowor for the objects needed from one or more federated areas toindependently repeat the previous performance is authorized, then at3520, if the a result report was specified for the previous performancein the request, instead of the instance log, then at 3522, the processormay the use the result report identifier provided in the request for theresult report to retrieve the instance log for the previous performance.

At 3530, the processor may use the identifiers specified in the instancelog for the objects associated with the previous performance to retrieveeach of those objects. It should be noted that, as has been previouslydiscussed, searches for objects to fulfill such a request received froma particular device may be limited to the one or more federated areas towhich that requesting device and/or a user operating the requestingdevice has been granted access (e.g., a particular private orintervening federated area, as well as any base federated area and/orany other intervening federated area interposed therebetween).Therefore, the retrieval of objects needed to independently regeneratethe result report may necessarily be limited to such authorizedfederated area(s).

At 3532, the processor may check whether the job flow relies on the useof a neural network that was trained using one or more performances ofanother job flow that does not relay on the use of a neural network. Ifso, then at 3534, the processor may use an identifier in either of thejob flow definition or instance log retrieved for the previousperformance that provides a link to the job flow definition or instancelog of the other job flow to retrieve objects associated with the otherjob flow and/or one or more performances of the other job flow.

Regardless of whether the job flow of the previous performance referredto in the request relies on the use of a neural network, if, at 3540,the request was to provide the objects needed to enable an independentrepeat of the previous performance of the job flow referred to in therequest, then at 3542, the processor may transmit the retrieved objectsassociated with that previous performance to the requesting device to soenable such an independent repeat performance. As previously discussed,the regenerated result report may be compared at the requesting deviceto the result report that was previously generated during the previousperformance to verify one or more aspects of the previous performance.However, if at 3540, the request received was not to so provide theretrieved objects, but instead, was for one or more federated devices torepeat the previous performance of the job flow, then the processor mayemploy the objects retrieved at 3530 to repeat the previous performance,and thereby regenerate the result report. As previously discussed, insome embodiments, including embodiments in which one or more of the datasets associated with the previous performance is relatively large insize, the processor of the federated device may cooperate with theprocessors of multiple other federated devices (e.g., operate as thefederated device grid 1005) to portions of the repeat performance amongmultiple federate devices to be carried out at least partially inparallel. At 3552, the processor may compare the regenerated resultreport to the result report previously generated in the previousperformance of the job flow. The processor may then transmit the resultsof that comparison to the requesting device at 3554.

However, if, at 3532, the job flow of the previous performance referredto in the request does rely on the use of a neural network, then, inaddition to retrieving objects associated with the other job flow at3534, the processor may check at 3560 whether the request was to providethe objects needed to enable an independent repeat of the previousperformance. If so, then at 3562, the processor may transmit theretrieved objects associated with that other job flow to the requestingdevice to enable aspects of the other job flow and/or one or moreperformances thereof to also be evaluated. However, if at 3560, therequest received was not to so provide the retrieved objects, butinstead, was for one or more federated devices to repeat the previousperformance of the job flow, then at 3570, the processor may employ theobjects retrieved at 3534 to perform the other job flow, and do so withthe data set(s) associated with the previous performance of the job flowreferred to in the request. At 3572, the processor may compare theresult report(s) generated by the performance of the other job flow tothe corresponding result reports regenerated from the repetition at 3550of the previous performance of the job flow referred to in the request.The processor may then transmit the results of that comparison to therequesting device at 3574.

FIGS. 33A and 33B, together, illustrate an example embodiment of a logicflow 3600. The logic flow 3600 may be representative of some or all ofthe operations executed by one or more embodiments described herein.More specifically, the logic flow 3600 may illustrate operationsperformed by the processor(s) 2550 in executing the control routine2540, and/or performed by other component(s) of at least one of thefederated devices 2500.

At 3610, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may receive arequest from a device, via a network (e.g., one of the reviewing devices2800 via the network 2999) and through a portal provided by theprocessor, to repeat a previous performance a job flow with one or moredata sets (e.g. one or more of the data sets 2330) specified in therequest by a job flow identifier and one or more data object identifiers(e.g., one of the job flow identifiers 2221, and one or more of the dataobject identifiers 2331). As previously discussed, persons and/orentities involved either in consuming results of analyses or inreviewing past performances of analyses may operate a device to make arequest for one or more federated devices to repeat a performance of ajob flow.

At 3612, in embodiments in which the federated device(s) that providefederated area(s) also control access thereto, the processor may performa check of whether the request is from an authorized device and/or froman authorized person or entity (e.g., scholastic, governmental orbusiness entity) operating the device that is an authorized user of atleast one federated area, and/or has been granted a level of access thatincludes the authorization to make such requests. As has been discussed,the processor may require the receipt of one or more securitycredentials from devices from which requests are received. If, at 3612,the processor determines that the request is not from a device and/oruser authorized to make such a request, then the processor may transmitan indication of denial of the request to the device via the network at3614.

However, if at 3612, the processor determines that the request for arepeat of a performance of the specified job flow with the specified oneor more data sets is authorized, then at 3620, the processor may the usethe combination of the job flow identifier and the one or more dataobject identifiers to search within one or more federated areas to whichthe requesting device and/or a user of the requesting device has beengranted access for an instance log associated with a previousperformance of the job flow with the one or more data sets.

It should be noted that, as has been previously discussed, searches forobjects to fulfill such a request received from a particular device maybe limited to the one or more federated areas to which that requestingdevice and/or a user operating the requesting device has been grantedaccess (e.g., a particular private or intervening federated area, aswell as any base federated area and/or any other intervening federatedarea interposed therebetween). Therefore, the retrieval of objectsneeded to repeat a previous performance of a job flow may necessarily belimited to such authorized federated area(s).

If, at 3630, the processor determines, as a result of the search at3620, that there is no such instance log, then at 3632, the processormay retrieve the job flow definition specified by the job flowidentifier provided in the request (e.g., one of the job flowdefinitions 2220) from the one or more federated areas for whichauthorization to access has been granted to the requesting device and/orthe user of the requesting device. At 3634, the processor may thenretrieve the most recent version of task routine for each task specifiedin the job flow definition by a flow task identifier (e.g., one or moreof the task routines 2440, each specified by a flow task identifiers2241) from the one or more federated areas to which access has beengranted. At 3636, the processor may retrieve each of the one or moredata sets specified by the one or more data object identifiers from theone or more federated areas to which access has been granted, and maythen use the retrieved job flow definition, the retrieved newestversions of task routines, and the retrieved one or more data sets toperform the job flow as requested. At 3638, the processor may transmitthe results of the performance to the requesting device. As analternative to (or in addition to) performing the job flow with the mostrecent versions of the task routines, the processor may transmit anindication to the requesting device that no record has been found of aprevious performance in the one or more federated areas to which accesshas been granted.

However, if at 3630, the processor successfully locates (during thesearch at 3620) such an instance log, then the processor mayadditionally determine at 3640 whether there is more than one suchinstance log, each of which is associated with a different performanceof the job flow with the one or more data sets specified in the request.If, at 3640, only one such instance log was located during the search at3620, then at 3650, the processor may then retrieve the versionsspecified in the instance log of each of the task routines specified inthe job flow definition for each task by a flow task identifier from theone or more federated areas to which access has been granted. At 3652,the processor may retrieve each of the one or more data sets specifiedby the one or more data object identifiers from the one or morefederated areas to which access has been granted, and may then use theretrieved job flow definition, the retrieved specified versions of taskroutines, and the retrieved one or more data sets to perform the jobflow as requested. At 3654, the processor may additionally retrieve theresult report generated in the previous performance of the job flow fromthe one or more federated areas to which access has been granted, andmay compare the retrieved result report to the new result reportgenerated in the new performance of the job flow at 3656. At 3658, theprocessor may transmit the results of the comparison of result reportsto the requesting device, and may transmit the new result report,itself, to the requesting device at 3658.

However, if at 3640, there is more than one such instance log locatedfound during the search at 3620, then the processor may transmit anindication of the available selection of the multiple previousperformances that correspond to the multiple located instance logs tothe requesting device at 3642 with a request that one of the multipleprevious performances be selected as the one from which the instance logwill be used. The processor may then await receipt of an indication of aselection of one of the multiple previous performances at 3644 beforeproceeding to retrieve specific versions of task routines at 3650.

FIGS. 34A and 34B, together, illustrate an example embodiment of a logicflow 3700. The logic flow 3700 may be representative of some or all ofthe operations executed by one or more embodiments described herein.More specifically, the logic flow 3700 may illustrate operationsperformed by the processor(s) 2550 in executing the control routine2540, and/or performed by other component(s) of at least one of thefederated devices 2500.

At 3710, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may receive arequest from a device, via a network (e.g., one of the reviewing devices2800 via the network 2999) and through a portal provided by theprocessor, to perform a job flow with one or more data sets (e.g. one ormore of the data sets 2330) specified in the request by a job flowidentifier and one or more data object identifiers (e.g., one of the jobflow identifiers 2221, and one or more of the data object identifiers2331).

At 3712, in embodiments in which the federated device(s) that providefederated area(s) also control access thereto, the processor may performa check of whether the request is from an authorized device and/or froman authorized person or entity (e.g., scholastic, governmental orbusiness entity) operating the device that is an authorized user of atleast one federated area, and/or has been granted a level of access thatincludes the authorization to make such requests. As has been discussed,the processor may require the receipt of one or more securitycredentials from devices from which requests are received. If, at 3712,the processor determines that the request is not from a device and/oruser authorized to make such a request, then the processor may transmitan indication of denial of the request to the device via the network at3714.

However, if at 3712, the processor determines that the request for aperformance of the specified job flow with the specified one or moredata sets is authorized, then at 3720, the processor may the use the jobflow identifier provided in the request to retrieve the correspondingjob flow definition (e.g., one of the job flow definitions 2220) fromwithin one or more federated areas to which the requesting device and/ora user of the requesting device has been granted access. At 3722, theprocessor may then retrieve the most recent version of task routine foreach task specified in the job flow definition by a flow task identifier(e.g., one or more of the task routines 1440, each specified by a flowtask identifiers 1241) that is stored within the one or more federatedareas to which the requesting device and/or a user of the requestingdevice has been granted access.

It should be noted that, as has been previously discussed, searches forobjects to fulfill such a request received from a particular device maybe limited to the one or more federated areas to which that requestingdevice and/or a user operating the requesting device has been grantedaccess (e.g., a particular private or intervening federated area, aswell as any base federated area and/or any other intervening federatedarea interposed therebetween). Therefore, the retrieval of objectsneeded to perform a specified job flow may necessarily be limited tosuch authorized federated area(s).

At 3724, the processor may use the combination of the job flowidentifier and the one or more data object identifiers to search for aninstance log associated with a previous performance of the job flow withthe one or more data sets within the one or more federated areas towhich the requesting device and/or a user of the requesting device hasbeen granted access. If, at 3730, the processor determines (during thesearch at 3724) that there is no such instance log, then at 3732, theprocessor may retrieve each of the one or more data sets specified bythe one or more data object identifiers from the one or more federatedareas to which the requesting device and/or a user of the requestingdevice has been granted access, and may then use the retrieved job flowdefinition, the retrieved newest versions of task routines, and theretrieved one or more data sets to perform the job flow as requested. At3734, the processor may transmit the results of the performance to therequesting device.

However, if at 3730, the processor successfully locates such an instancelog (during the search at 3724), then the processor may additionallydetermine at 3740 whether there is more than one such instance log, eachof which is associated with a different performance of the job flow withthe one or more data sets specified in the request. If only one suchinstance log is located at 3740, then at 3750, the processor may thenretrieve the versions specified in the instance log of each of the taskroutines for each task specified in the job flow definition by a flowtask identifier from the one or more federated areas to which therequesting device and/or a user of the requesting device has beengranted access. However, if at 3740, there is more than one suchinstance log located, then the processor may analyze the multipleinstance logs to identify and select the instance log from among themultiple instance logs that is associated with the most recentperformance of the job flow at 3742, before proceeding to retrievespecified versions task routines for each task of the job flow at 3750.

At 3752, for each task specified in the job flow definition, theprocessor may compare the retrieved version of the task routineidentified in the instance log to the newest version stored within theone or more federated areas to which the requesting device and/or a userof the requesting device has been granted access to determine whethereach of the retrieved task routines is the newest version. At 3760, ifeach of the retrieved task routines is the newest version thereof, thenthere is no need to perform the job flow anew, as the most recentprevious performance (or the only previous performance) already used thenewest version of each task routine such that the result reportgenerated is already the most up to date form of the result report,possible. Thus, at 3762, the processor may retrieve the result report ofthat previous performance using the result report identifier specifiedby the instance log from the one or more federated areas to which therequesting device and/or a user of the requesting device has beengranted access, and may then transmit the result report to therequesting device at 3734.

However, if at 3760, one or more of the task routines specified in theinstance log and retrieved from the one or more federated areas to whichthe requesting device and/or a user of the requesting device has beengranted access is not the newest version thereof, then at 3770, theprocessor may parse the job flow set forth in the job flow definition toidentify the earliest task within the job flow at which the version ofthe task routine so retrieved is not the newest version. At 3772,starting at that earliest task, the processor may use the newest versionof task routine for that task and for each later task in the job flow toperform that task and each of the later tasks, thereby taking advantageof the one or more earlier tasks of job flow at which the newest versionof task routine was used in the most recent previous performance (or theonly previous performance). The processor may then transmit the resultreport generated in such a partial performance of the job flow to therequesting device at 3734.

FIG. 35 illustrates an example embodiment of a logic flow 3800. Thelogic flow 3800 may be representative of some or all of the operationsexecuted by one or more embodiments described herein. More specifically,the logic flow 3800 may illustrate operations performed by theprocessor(s) 2550 in executing the control routine 2540, and/orperformed by other component(s) of at least one of the federated devices2500.

At 3810, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may receive arequest from a device, via a network (e.g., one of the source devices2100, or one of the reviewing devices 2800, via the network 2999) andthrough a portal provided by the processor for access to other devicesvia the network, to instantiate a transfer area (e.g., one of thetransfer areas 2666) for use in transferring one or more objects betweentwo federated areas specified in the request (e.g., two of the federatedareas 2566). As has been discussed, such an automated transferrelationship making such use of a transfer area may be put in placebetween any two federated areas within a set of related federated areas,such as between federated areas in different branches of a hierarchicaltree of federated areas.

At 3812, in embodiments in which the federated device(s) that providefederated area(s) also control access to thereto, the processor mayperform a check of whether the request is from an authorized deviceand/or from an authorized person or entity (e.g., scholastic,governmental or business entity) operating the device that is anauthorized user of the specified federated areas (as well as for anyrelated base federated area and/or any related intervening federatedarea), and/or has been granted a level of access that includes theauthorization to make such requests. If, at 3812, the processordetermines that the request is not from an authorized device and/or isnot from a person and/or entity authorized as a user with sufficientaccess to make such a request, then the processor may transmit anindication of denial of the request to the device from which the requestis received via the network at 3814.

However, if at 3812, the processor determines that the request isauthorized, then at 3820, the processor may allocate storage space forthe requested new transfer area. As previously discussed, the allocationof storage space for a new transfer area may entail manipulating the twofederated areas between which object(s) are to be transferred throughthe new transfer area to create a storage area where the two federatedareas overlap, and positioning the new transfer area within thatoverlapping storage area. However, as also previously discussed, theallocation of storage space for a new transfer area may entailpositioning the new transfer area within a base federated area or anintervening federated area to which the two federated areas betweenwhich object(s) are to be transferred are both related (e.g., from whichthe two federated areas both branch). At 3822, the processor may add anindication of the creation of the requested new transfer area, as wellas indications of the two specified federated areas between whichobject(s) are to be transferred through the new transfer area, to atransfer area database (e.g., within the transfer area parameters 2636).

At 3830, the processor may check whether a transfer flow definition andtransfer routine(s) (e.g., one of the transfer flow definitions 2620,and one or more of the transfer routines 2640) were received with therequest from the requesting device. As has been discussed, variousaspects of the automated transfers of one or more objects that are to beperformed using a transfer area may be specified in a transfer flowdefinition such that the transfer flow definition, including and notlimited to, identifiers of the transfer routine(s) to be executed toeffect such automated transfers, indications of what object(s) are to beautomatically transferred when one or more conditions are met, and/orthe one or more conditions that may trigger such automated transfer(s).

If, at 3830, a transfer flow definition and transfer routine(s) werereceived with the request, then at 3832, the processor may distributethe transfer flow definition and transfer routine(s) among the twospecified federated areas and/or among any base federated area and/orintervening federated area to which both of the specified federatedareas are related within the set of related federated areas of which thetwo specified federated areas belong. As has been discussed, a transferflow definition may be stored within its associated transfer area, maybe stored alongside its associated transfer area within the storagespace that falls within an overlap of the two federated areas betweenwhich transfers are to be performed, or within a base federated area oran intermediate federated area from which branch the two federated areasbetween which transfers are to be performed. As has also been discussed,transfer routine(s) may be stored within one or both of the twofederated areas between which transfers are to be performed, and/orwithin a base federated area or an intermediate federated area fromwhich branch the two federated areas between which transfers are to beperformed.

FIG. 36 illustrates an example embodiment of a logic flow 3900. Thelogic flow 3900 may be representative of some or all of the operationsexecuted by one or more embodiments described herein. More specifically,the logic flow 3900 may illustrate operations performed by theprocessor(s) 2550 in executing the control routine 2540, and/orperformed by other component(s) of at least one of the federated devices2500.

At 3910, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may perform afirst job flow in accordance with a first job flow definition (e.g., oneof the job flow definitions 2220) with first data set(s) and/or firsttask routine(s) (e.g., with one or more of the data sets 2330 and/or2370, and/or with one or more of the task routines 2440) at leastpartially within a first federated area (e.g., within one of thefederated areas 2566) of a set of related federated areas provided by atleast the one federated device.

At 3920, the processor may perform a first part of a transfer flowdefined by a transfer flow definition (e.g., one of the transfer flowdefinitions 2620) by executing a first transfer routine (e.g., one ofthe transfer routines 2640) that causes the processor to analyze one ormore objects generated by the performance of the first job flow. As hasbeen discussed, an automated transfer of object(s) of a transfer flow isconditioned on one or more specified conditions being met, as determinedby an analysis of one or more objects that may be generated by theperformance of a job flow. As has also been discussed, the execution ofthe first transfer routine may be within the first federated area. In soexecuting the first transfer routine, the processor may check at 3922whether a condition has been met to trigger the automated transfer ofcopies of one or more objects from the first federated area and into atransfer area associated with the transfer flow. If, at 3922, theprocessor determines that the condition has not been met, then at 3930,if there is to be another performance of the first job flow, then theprocessor may again so perform the first job flow at 3910.

However, if at 3922, the processor determines that the condition hasbeen met, then the processor may perform a second part of the transferflow defined by the transfer flow definition by performing the transferof copies of the one or more objects from the first federated area andinto the transfer area at 3940. At 3942, the processor (or anotherprocessor of the same federated device or of a different federateddevice of the distributed processing system) may continue theperformance of the second part of the transfer flow by retrieving thecopies of the one or more objects from the transfer area, and storingthe copies of the one or more objects into a second federated area ofthe set of related federated areas. As has been discussed, effectingsuch retrieval of copies of objects from a transfer area may entail aprocessor of the same or different federated device executing a secondtransfer routine within the second federated area. In so executing thesecond transfer routine, such a processor may be caused to recurringlycheck the transfer area to determine whether the copies of the one ormore objects have been transferred thereto from the first federatedarea, and may be triggered to so retrieve them upon determining thatthey have been so transferred thereto.

At 3950, the processor (or another processor of the same federateddevice or of a different federated device of the distributed processingsystem) may perform a second job flow in accordance with a second jobflow definition with the copies of the one or more transferred objects,second data set(s) and/or second task routine(s) at least partiallywithin the second federated area.

FIGS. 37A and 37B, together, illustrate an example embodiment of a logicflow 4000. The logic flow 4000 may be representative of some or all ofthe operations executed by one or more embodiments described herein.More specifically, the logic flow 4000 may illustrate operationsperformed by the processor(s) 2550 in executing the control routine2540, and/or performed by other component(s) of at least one of thefederated devices 2500.

At 4010, a training data set may be generated from a larger data set(e.g., the training data set 2330 t generated from the larger data set2330 x). As was also discussed in reference to FIG. 23A, such a trainingdata set may be generated through any of a variety of automatedstatistical analyses (e.g., using one or more processors of one or morefederated devices) that generates the training data set to have one ormore characteristics that are representative of the larger data set,and/or to emphasize and/or de-emphasize one or more characteristics ofthe larger data set in preparation for training a neural network.

At 4012, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may performmultiple iterations of a training job flow in accordance with a trainingjob flow definition (e.g., the job flow definition 2220 t) with thetraining data set and one or more training task routines (e.g., with oneor more of the task routines 2440 t) at least partially within a firstfederated area (e.g., within the federated area 2566 t) of a set ofrelated federated areas provided by at least the one federated device.

At 4020, the processor may perform a first part of a transfer flowdefined by a transfer flow definition (e.g., the transfer flowdefinition 2620 tuv) by executing a first transfer routine (e.g., thetransfer routine 2640 t) that causes the processor to analyze aniteration of a result report generated by an iteration of performance ofthe training job flow (e.g., the an iteration of the result report 2770t), where each iteration of that result report may be indicative of thedegree to which the neural network has been successfully trained. Inexecuting the first transfer routine, the processor may check at 4022whether a condition has been met to trigger the automated transfer of acopy of the data set of neural net weights and biases from the firstfederated area and into a first transfer area associated with thetransfer flow. As discussed, such a condition may be a threshold degreeto which the neural network has been successfully trained and/or aminimum number of iterations of performance of the training job flow.If, at 4022, the processor determines that the condition has not beenmet, then at 4030, if there is to be another performance of the trainingjob flow, then the processor may perform another of the multipleiterations of the training job flow at 4012.

However, if at 4022, the processor determines that the condition hasbeen met, then the processor may perform a second part of the transferflow defined by the transfer flow definition by performing the transferinto the first transfer area, at 4040, of a copy of a data set thatincludes values for weights and biases of the neural net being trainedthrough the repeated performances of the training job flow, and whichhas been generated by those repeated performances. At 4042, theprocessor (or another processor of the same federated device or of adifferent federated device of the distributed processing system) maycontinue the performance of the second part of the transfer flow byretrieving the copy of the data set of neural net weights and biasesfrom the first transfer area, and storing the copy into a secondfederated area of the set of related federated areas. As has beendiscussed, effecting such retrieval of copies of objects from a transferarea may entail a processor of the same or different federated deviceexecuting a second transfer routine within the second federated area. Inso executing the second transfer routine, such a processor may be causedto recurringly check the first transfer area to determine whether thecopy of the data set of neural net weights and biases has beentransferred thereto from the first federated area, and may be triggeredto so retrieve it upon determining that it has been so transferredthereto.

At 4050, a testing data set may be generated from the larger data set(e.g., the testing data set 2330 u generated from the larger data set2330 x). As previously discussed, like the training data set, such atesting data set may be generated through any of a variety of automatedstatistical analyses (e.g., using one or more processors of one or morefederated devices) that generates the testing data set to have one ormore characteristics that are representative of the larger data set,and/or to emphasize and/or de-emphasize one or more characteristics ofthe larger data set in preparation for testing the neural networkdefined by the data set of neural net weights and biases.

At 4052, the processor (or another processor of the same federateddevice or of a different federated device of the distributed processingsystem) may perform multiple iterations of a testing job flow inaccordance with a testing job flow definition (e.g., the job flowdefinition 2220 u) with the copy of the data set of neural net weightsand biases, the testing data set and one or more testing task routines(e.g., with one or more of the task routines 2440 u) at least partiallywithin the second federated area (e.g., within the federated area 2566u) of a set of related federated areas provided by at least the onefederated device.

At 4060, the processor (or other processor of the same or differentfederated device) may perform a third part of the transfer flow byfurther executing the second transfer routine, thereby causing such aprocessor to analyze an iteration of a result report generated by aniteration of performance of the testing job flow (e.g., the an iterationof the result report 2770 u), where each iteration of that result reportmay be indicative of the degree to which the neural network has beentested and/or found to perform its function successfully. In executingthe second transfer routine, the processor may check at 4062 whether acondition has been met to trigger the automated transfer of a copy ofthe data set of neural net weights and biases from the second federatedarea and into a second transfer area associated with the transfer flow.As discussed, such a condition may be a threshold degree to which theneural network has been tested and/or found to perform its functionsuccessfully, and/or a minimum number of iterations of performance ofthe testing job flow. If, at 4062, the processor (or other processor ofthe same or different federated device) determines that the conditionhas not been met, then at 4070, if there is to be another performance ofthe testing job flow, then such a processor may perform another of themultiple iterations of the testing job flow at 4052.

However, if at 4062, the processor determines that the condition hasbeen met, then the processor may perform a fourth part of the transferflow defined by the transfer flow definition by performing the transferinto the second transfer area, at 4080, of a copy of a data set ofneural net weights and biases. At 4082, the processor (or anotherprocessor of the same federated device or of a different federateddevice of the distributed processing system) may continue theperformance of the fourth part of the transfer flow by retrieving thecopy of the data set of neural net weights and biases from the secondtransfer area, and storing the copy into a third federated area of theset of related federated areas. Again, effecting such retrieval ofcopies of objects from a transfer area may entail a processor of thesame or different federated device executing a third transfer routinewithin the third federated area. In so executing the third transferroutine, such a processor may be caused to recurringly check the secondtransfer area to determine whether the copy of the data set of neuralnet weights and biases has been transferred thereto from the secondfederated area, and may be triggered to so retrieve it upon determiningthat it has been so transferred thereto.

At 4090, the processor (or another processor of the same federateddevice or of a different federated device of the distributed processingsystem) may perform commence multiple iterations of performances ofexperimental use of the neural network through the performance ofmultiple iterations of experimental use job flows with the data set ofneural net weights and biases and/or another portion of the larger dataset.

FIG. 38 illustrates an example embodiment of a logic flow 4100. Thelogic flow 4100 may be representative of some or all of the operationsexecuted by one or more embodiments described herein. More specifically,the logic flow 4100 may illustrate operations performed by theprocessor(s) 2550 in executing the control routine 2540, and/orperformed by other component(s) of at least one of the federated devices2500.

At 4110, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may checkwhether training data to train a neural network (e.g., the neuralnetwork 2571) to perform an analytical function is available thatincludes sets of input values along with corresponding sets of outputvalues (e.g., the data set 2330 t and corresponding result report 2770t). As has been discussed, such paired sets of input values and outputvalues, if available, may be drawn from data sets and correspondingresult reports from past performances of a non-neuromorphicimplementation of an analytical function, and used to train a neuralnetwork for a neuromorphic implementation of the same analyticalfunction. If, at 4110, such training data is available, then at 4120,the processor may retrieve it.

However, if at 4110, such training data is not available, then at 4112,the processor may retrieve one or more routines needed to implement apseudo random generator (e.g., the one or more task routines 2440 s) togenerate sets of input values for inclusion in training data (e.g., tobecome the data set 2330 t). The processor may also retrieve one or moreroutines needed to perform the existing non-neuromorphic implementationof the analytical function (e.g., the one or more task routines 2440 x)with the randomly generated sets of input values as input to generatecorresponding sets of output values for inclusion in the training data(e.g., to generate the result report 2770 t). At 4114, the processor mayexecute the one or more routines of the random generator to so generatethe sets of input values. Then, at 4116, the processor may execute theone or more routines of the non-neuromorphic implementation of theanalytical function to so use the randomly generated sets of inputvalues as inputs to generate the corresponding sets of output values.

Regardless of whether the training data is retrieved or must begenerated, at 4130, the processor may then select a set ofhyperparameters that define structural features of the neural networkfrom among multiple sets of hyperparameters in preparation for thetraining of the neural network. At 4132, the processor may use theselected set of hyperparameters and the training data to train theneural network. At 4140, the processor may use additional training dataand/or testing data (e.g., the data set 2330 u and corresponding resultreport 2770 u) to test the degree of accuracy with which the neuralnetwork performs the analytical function.

If, at 4142, the degree of accuracy does not at least meet apredetermined minimum threshold of accuracy, then at 4144, the processormay check whether there is another set of hyperparameters for structuralfeatures of the neural network that have not yet been tried. If so, thenthe processor may select another set of hyperparameters at 4130 inpreparation for retraining the neural network. As has been discussed,the use of different sets of hyperparameters in defining structuralfeatures of a neural network, including the quantity of artificialneurons therein, can have an effect on its degree of accuracy inperforming a particular function. However, if at 4144, there are no moresets of hyperparameters that have not yet been tried, then the processormay provide an indication at 4146 of a need for more sets ofhyperparameters to try and/or a need for a larger quantity of artificialneurons to be made available for implementing the neural network.

However, if at 4142, the degree of accuracy of the neural network doesat least meet the predetermined minimum threshold of accuracy, then theprocessor may store the neural network configuration data created as aresult of the training (e.g., the data set 2370 t) to enable thattrained neural network configuration data to be made available at latertime at 4152 for further testing and/or use of the neural network.

FIG. 39 illustrates an example embodiment of a logic flow 4200. Thelogic flow 4200 may be representative of some or all of the operationsexecuted by one or more embodiments described herein. More specifically,the logic flow 4200 may illustrate operations performed by theprocessor(s) 2550 in executing the control routine 2540, and/orperformed by other component(s) of at least one of the federated devices2500.

At 4210, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may retrieve oneor more existing routines of a non-neuromorphic implementation of ananalytical function (e.g., the one or more task routines 2440 x). At4212, the processor may also retrieve neural network configuration datathat defines a neural network that has been trained to perform the sameanalytical function (e.g., the data set 2370 t). At 4214, the processormay further retrieve a data set for use as input to performances of theanalytical function (e.g., the data set 2330 u, 2330 v or 2330 x).

At 4220, the processor, possibly in cooperation with one or more otherprocessors among multiple federated devices of the distributedprocessing system, executes the one or more routines of thenon-neuromorphic implementation of the analytical function, and operatesthe neural network trained to provide the neuromorphic implementation,to cause both the non-neuromorphic and neuromorphic implementations tobe performed at least partially in parallel with the earlier retrieveddata set. At 4230, the processor may compare the sets of output valuesgenerated by each of the implementations of the analytical function fromthe same corresponding input values of the retrieved data set to testthe degree of accuracy of the neural network in performing theanalytical function.

If, at 4240, the degree of accuracy does not at least meet apredetermined minimum threshold of accuracy, then at 4242, the processormay provide an indication of the insufficient degree of accuracy of theneural network in performing the analytical function. However, if at4240, the degree of accuracy of the neural network does at least meetthe predetermined minimum threshold of accuracy, then at 4250, theprocessor may check whether the degree of accuracy at least meets amidway threshold of accuracy.

If, at 4250, the degree of accuracy does not at least meet thepredetermined midway threshold of accuracy, then at 4252, the processormay use the combination of the retrieved data set and the correspondingoutput values generated by the non-neuromorphic implementation of theanalytical function as addition training data to further train theneural network before retrieving still more input data at 4214 inpreparation for performing still more testing. However, if at 4250, thedegree of accuracy of the neural network does at least meet thepredetermined midway threshold of accuracy, then at 4260, the processormay check whether the degree of accuracy at least meets a higherthreshold of accuracy.

If, at 4260, the degree of accuracy does not at least meet thepredetermined higher threshold of accuracy, then the processor mayretrieve still more input data at 4214 in preparation for performingstill more testing. However, if at 4260, the degree of accuracy of theneural network does at least meet the predetermined higher threshold ofaccuracy, then at 4262, the processor may make the neural networkconfiguration data that defines the neural network available for furtheruse without such parallel use of the non-neuromorphic implementation.

FIGS. 40A, 40B and 40C, together, illustrate an example embodiment of alogic flow 4300. The logic flow 4300 may be representative of some orall of the operations executed by one or more embodiments describedherein. More specifically, the logic flow 4300 may illustrate operationsperformed by the processor(s) 2550 in executing the control routine2540, and/or performed by other component(s) of at least one of thefederated devices 2500.

At 4310, a processor of a federated device of a distributed processingsystem (e.g., at least one processor 2550 of one of the federateddevices 2500 of the distributed processing system 2000) may generatetraining data (e.g., a combination of the data set 2330 t and thecorresponding result report 2770 t), either from a larger data set andcorresponding larger result report associated with previous performancesof a non-neuromorphic implementation of an analytical function (e.g., acombination of the data set 2330 x and the result report 2770 x), orfrom a randomly generated data set and a corresponding result reportgenerated from the randomly generated data set via the non-neuromorphicimplementation of the analytical function.

4312, the processor may then select a set of hyperparameters that definestructural features of the neural network from among multiple sets ofhyperparameters in preparation for the training of the neural network.At 4314, the processor may perform, at least partly in a first federatedarea, one or more of iterations of a training job flow (e.g., thetraining job flow 2200 t, which includes the execution of one or moretraining task routines 2440 t) with the selected set of hyperparametersand the training data to train the neural network.

At 4320, the processor may perform a first part of a transfer flowdefined by a transfer flow definition (e.g., the transfer flowdefinition 2620 tuv) by executing a first transfer routine (e.g., thetransfer routine 2640 t) that causes the processor to monitor theprogress of the training of the neural network. In executing the firsttransfer routine, the processor may check at 4322 whether a conditionhas been met to trigger the automated transfer of a copy of the neuralnetwork configuration data (e.g., a copy of the data set 2370 t) fromthe first federated area and into a second federated area. If, at 4322,the processor determines that the condition has not been met, then theprocessor may perform another one or more iterations of the training jobflow at 4314.

However, if at 4322, the processor determines that the condition hasbeen met, then the processor may perform a second part of the transferflow defined by the transfer flow definition by performing the transferof the neural network configuration data from the first federated to thesecond federated area through the first transfer area, at 4324. In sodoing, the processor may be caused to cooperate with another processorof a different federated device of the distributed processing system.

At 4330, a testing data set (e.g., the data set 2330 u and correspondingresult report 2770 u) may be generated from the larger data set andcorresponding larger result report (e.g., the data set 2330 x andcorresponding result report 2770 x). At 4332, the processor may perform,at least partly in the second federated area, one or more of iterationsof a testing job flow (e.g., the testing job flow 2200 u, which includesthe execution of one or more training task routines 2440 u) with thetransferred copy of the neural network configuration data and thetesting data to test the neural network.

At 4340, a third part of the transfer flow defined by the transfer flowdefinition may be performed by executing a second transfer routine(e.g., the transfer routine 2640 u) that causes monitoring of theprogress of the testing of the neural network. In executing the secondtransfer routine, a check may be made at 4342 of whether a condition hasbeen met to trigger the automated transfer of a copy of the neuralnetwork configuration data from the second federated area and into athird federated area. If, at 4342, the condition is determined to havenot been met, then a check may be made at 4350 of whether a conditionhas been met to trigger the automated transfer of an indication of theresults of the testing back to first federated area to enable and/ortrigger retraining of the neural network. If, at 4350, the condition isdetermined to have not been met, then another one or more iterations ofthe testing job flow may be performed at 4332. If, at 4350, thecondition is determined to have been met, then the second part of thetransfer flow is reversed at 4352 with a transfer of an indication ofthe results of the testing back to the first federated area throughfirst transfer area, followed by the selection of another set ofhyperparameters at 4312 in preparation for retraining the neuralnetwork.

However, if at 4342, the condition is determined to have been met, thena fourth part of the transfer flow defined by the transfer flowdefinition may be performed by performing the transfer of the neuralnetwork configuration data from the second federated to the thirdfederated area through the second transfer area, at 4344. In so doing,there may be cooperation with still another processor of still anotherfederated device of the distributed processing system.

At 4360, input data on which the analytical function is to be performedis received (e.g., data set 2330 v). At 4362, at least partly within thethird federated area, one or more routines of a non-neuromorphicimplementation of the analytical function are executed, and the neuralnetwork trained to provide the neuromorphic implementation is operated,thereby causing both non-neuromorphic and neuromorphic implementationsof the analytical function to be performed at least partially inparallel with the received data set.

At 4370, a fifth part of the transfer flow defined by the transfer flowdefinition may be performed by executing a third transfer routine (e.g.,the transfer routine 2640 v) that causes comparisons to be made betweenthe sets of output values generated by each of the implementations ofthe analytical function from the same corresponding input values of thereceived data set to test the degree of accuracy of the neural networkin performing the analytical function.

If, at 4372, the degree of accuracy does not at least meet apredetermined minimum threshold of accuracy, then at 4374, a sixth partof the transfer flow may be performed with the transfer of an indicationof the results of using the neural network being transferred from thethird federated area to the first federated area through a thirdtransfer area, followed by the selection of another set ofhyperparameters at 4312 in preparation for retraining the neuralnetwork. However, if at 4372, the degree of accuracy of the neuralnetwork does at least meet the predetermined minimum threshold ofaccuracy, then at 4380, a check may be made of whether the degree ofaccuracy at least meets a midway threshold of accuracy.

If, at 4380, the degree of accuracy does not at least meet thepredetermined midway threshold of accuracy, then at 4382, thecombination of the received data set and the corresponding output valuesgenerated by the non-neuromorphic implementation of the analyticalfunction may be used as addition training data to further train theneural network before receiving still more input data at 4360 inpreparation for further using the neural network. However, if at 4380,the degree of accuracy of the neural network does at least meet thepredetermined midway threshold of accuracy, then at 4390, a check may bemade of whether the degree of accuracy at least meets a higher thresholdof accuracy.

If, at 4390, the degree of accuracy does not at least meet thepredetermined higher threshold of accuracy, then more input data may bereceived at 4360 in preparation for further use of the neural network.However, if at 4390, the degree of accuracy of the neural network doesat least meet the predetermined higher threshold of accuracy, then at4392, the neural network configuration data that defines the neuralnetwork may be made available for further use without such parallel useof the non-neuromorphic implementation.

In various embodiments, each of the processors 2150, 2550 and 2850 mayinclude any of a wide variety of commercially available processors.Further, one or more of these processors may include multipleprocessors, a multi-threaded processor, a multi-core processor (whetherthe multiple cores coexist on the same or separate dies), and/or amulti-processor architecture of some other variety by which multiplephysically separate processors are linked.

However, in a specific embodiment, the processor 2550 of each of the oneor more federated devices 1500 may be selected to efficiently performthe analysis of multiple instances of job flows at least partially inparallel. By way of example, the processor 2550 may incorporate asingle-instruction multiple-data (SIMD) architecture, may incorporatemultiple processing pipelines, and/or may incorporate the ability tosupport multiple simultaneous threads of execution per processingpipeline. Alternatively or additionally by way of example, the processor1550 may incorporate multi-threaded capabilities and/or multipleprocessor cores to enable parallel performances of the tasks of morethan job flow.

In various embodiments, each of the control routines 2140, 2540 and2840, including the components of which each is composed, may beselected to be operative on whatever type of processor or processorsthat are selected to implement applicable ones of the processors 2150,2550 and/or 2850 within each one of the devices 2100, 2500 and/or 2800,respectively. In various embodiments, each of these routines may includeone or more of an operating system, device drivers and/orapplication-level routines (e.g., so-called “software suites” providedon disc media, “applets” obtained from a remote server, etc.). Where anoperating system is included, the operating system may be any of avariety of available operating systems appropriate for the processors2150, 2550 and/or 2850. Where one or more device drivers are included,those device drivers may provide support for any of a variety of othercomponents, whether hardware or software components, of the devices2100, 2500 and/or 2800.

In various embodiments, each of the storages 2160, 2560 and 2860 may bebased on any of a wide variety of information storage technologies,including volatile technologies requiring the uninterrupted provision ofelectric power, and/or including technologies entailing the use ofmachine-readable storage media that may or may not be removable. Thus,each of these storages may include any of a wide variety of types (orcombination of types) of storage device, including without limitation,read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM),Double-Data-Rate DRAM (DDR-DRAM), synchronous DRAM (SDRAM), static RAM(SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM),electrically erasable programmable ROM (EEPROM), flash memory, polymermemory (e.g., ferroelectric polymer memory), ovonic memory, phase changeor ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS)memory, magnetic or optical cards, one or more individual ferromagneticdisk drives, non-volatile storage class memory, or a plurality ofstorage devices organized into one or more arrays (e.g., multipleferromagnetic disk drives organized into a Redundant Array ofIndependent Disks array, or RAID array). It should be noted thatalthough each of these storages is depicted as a single block, one ormore of these may include multiple storage devices that may be based ondiffering storage technologies. Thus, for example, one or more of eachof these depicted storages may represent a combination of an opticaldrive or flash memory card reader by which programs and/or data may bestored and conveyed on some form of machine-readable storage media, aferromagnetic disk drive to store programs and/or data locally for arelatively extended period, and one or more volatile solid state memorydevices enabling relatively quick access to programs and/or data (e.g.,SRAM or DRAM). It should also be noted that each of these storages maybe made up of multiple storage components based on identical storagetechnology, but which may be maintained separately as a result ofspecialization in use (e.g., some DRAM devices employed as a mainstorage while other DRAM devices employed as a distinct frame buffer ofa graphics controller).

However, in a specific embodiment, the storage 2560 in embodiments inwhich the one or more of the federated devices 2500 provide federatedspaces 2566, or the storage devices 2600 in embodiments in which the oneor more storage devices 2600 provide federated spaces 2566, may beimplemented with a redundant array of independent discs (RAID) of a RAIDlevel selected to provide fault tolerance to objects stored within thefederated spaces 2566.

In various embodiments, each of the input devices 2110 and 2810 may eachbe any of a variety of types of input device that may each employ any ofa wide variety of input detection and/or reception technologies.Examples of such input devices include, and are not limited to,microphones, remote controls, stylus pens, card readers, finger printreaders, virtual reality interaction gloves, graphical input tablets,joysticks, keyboards, retina scanners, the touch input components oftouch screens, trackballs, environmental sensors, and/or either camerasor camera arrays to monitor movement of persons to accept commandsand/or data provided by those persons via gestures and/or facialexpressions.

In various embodiments, each of the displays 2180 and 2880 may each beany of a variety of types of display device that may each employ any ofa wide variety of visual presentation technologies. Examples of such adisplay device includes, and is not limited to, a cathode-ray tube(CRT), an electroluminescent (EL) panel, a liquid crystal display (LCD),a gas plasma display, etc. In some embodiments, the displays 2180 and/or2880 may each be a touchscreen display such that the input devices 2110and/or 2810, respectively, may be incorporated therein astouch-sensitive components thereof.

In various embodiments, each of the network interfaces 2190, 2590 and2890 may employ any of a wide variety of communications technologiesenabling these devices to be coupled to other devices as has beendescribed. Each of these interfaces includes circuitry providing atleast some of the requisite functionality to enable such coupling.However, each of these interfaces may also be at least partiallyimplemented with sequences of instructions executed by correspondingones of the processors (e.g., to implement a protocol stack or otherfeatures). Where electrically and/or optically conductive cabling isemployed, these interfaces may employ timings and/or protocolsconforming to any of a variety of industry standards, including withoutlimitation, RS-232C, RS-422, USB, Ethernet (IEEE-802.3) or IEEE-1394.Where the use of wireless transmissions is entailed, these interfacesmay employ timings and/or protocols conforming to any of a variety ofindustry standards, including without limitation, IEEE 802.11a,802.11ad, 802.11ah, 802.11ax, 802.11b, 802.11g, 802.16, 802.20 (commonlyreferred to as “Mobile Broadband Wireless Access”); Bluetooth; ZigBee;or a cellular radiotelephone service such as GSM with General PacketRadio Service (GSM/GPRS), CDMA/1×RTT, Enhanced Data Rates for GlobalEvolution (EDGE), Evolution Data Only/Optimized (EV-DO), Evolution ForData and Voice (EV-DV), High Speed Downlink Packet Access (HSDPA), HighSpeed Uplink Packet Access (HSUPA), 4G LTE, etc.

However, in a specific embodiment, one or more of the network interfaces2190, 2590 and/or 2890 may be implemented with multiple copper-based orfiber-optic based network interface ports to provide redundant and/orparallel pathways in exchanging one or more of the data sets 2330 and/or2370.

In various embodiments, the division of processing and/or storageresources among the federated devices 1500, and/or the API architecturesemployed to support communications between the federated devices andother devices may be configured to and/or selected to conform to any ofa variety of standards for distributed processing, including withoutlimitation, IEEE P2413, AllJoyn, IoTivity, etc. By way of example, asubset of API and/or other architectural features of one or more of suchstandards may be employed to implement the relatively minimal degree ofcoordination described herein to provide greater efficiency inparallelizing processing of data, while minimizing exchanges ofcoordinating information that may lead to undesired instances ofserialization among processes. However, it should be noted that theparallelization of storage, retrieval and/or processing of portions ofthe data sets 2330 and/or 2370 are not dependent on, nor constrained by,existing API architectures and/or supporting communications protocols.More broadly, there is nothing in the manner in which the data sets 2330and/or 2370 may be organized in storage, transmission and/ordistribution via the network 2999 that is bound to existing APIarchitectures or protocols.

Some systems may use Hadoop®, an open-source framework for storing andanalyzing big data in a distributed computing environment. Some systemsmay use cloud computing, which can enable ubiquitous, convenient,on-demand network access to a shared pool of configurable computingresources (e.g., networks, servers, storage, applications and services)that can be rapidly provisioned and released with minimal managementeffort or service provider interaction. Some grid systems may beimplemented as a multi-node Hadoop® cluster, as understood by a personof skill in the art. Apache™ Hadoop® is an open-source softwareframework for distributed computing.

The invention claimed is:
 1. An apparatus comprising a first processorand a first storage to store first instructions that, when executed bythe first processor, cause the first processor to perform operationscomprising: perform a testing job flow with a testing data set at leastpartly within a testing federated area to test a neural network trainedto perform an analytical function, wherein: the neural network isdefined by neural network configuration data that specifies ahyperparameter comprising at least one of a quantity of artificialneurons within the neural network or a quantity of rows of theartificial neurons into which the artificial neurons are organizedwithin the neural network; the neural network configuration data alsospecifies a trained parameter comprising at least one of weight valuesof the artificial neurons, bias values of the artificial neurons orfiring patterns of the artificial neurons; the testing data setcomprises multiple sets of input values and corresponding multiple setsof output values generated from a previous non-neuromorphic performanceof the analytical function with the multiple sets of input values inwhich the neural network is not used; the performance of the testing jobflow comprises multiple iterations of execution, by the first processor,of instructions of at least one testing routine; during each iterationof execution of at least one testing routine, the first processor iscaused to provide a set of input values of the testing data set to theneural network, and to analyze an output of the neural network generatedfrom the set of input values relative to the corresponding set of outputvalues of the testing data to determine a degree of accuracy of theperformance of the analytical function by the neural network relative tothe previous non-neuromorphic performance of the analytical function;and the testing federated area is maintained within one or more storagedevices to store at least one of the at least one testing routine, thetesting data set or a testing job flow definition that defines thetesting job flow; and perform a transfer flow to transfer an objectindicative of results of the testing of the neural network from thetesting federated area to another federated area, wherein theperformance of the transfer flow comprises at least one iteration ofexecution, by the first processor, of instructions of at least onetransfer routine that causes the first processor to: in response to thedegree of accuracy falling below a predetermined minimum threshold:select a training federated area that is maintained by the one or morestorage devices, and in which the neural network was at least partlytrained, to be the other federated area to which the object is to betransferred; and transfer the object to the selected other federatedarea, wherein the object comprises at least one of a data value thatspecifies the degree of accuracy, at least one set of input values ofthe testing data set associated with inaccurate output, at least one setof output values of the testing data set associated with inaccurateoutput, or inaccurate output generated from at least one set of inputvalues of the testing data set; and in response to the degree ofaccuracy exceeding a predetermined maximum threshold: select a usagefederated area that is maintained by the one or more storage devices,and in which the neural network is to be made available for use; andtransfer the object to the selected other federated area, wherein theobject comprises a copy of the neural network configuration data.
 2. Theapparatus of claim 1, wherein: during performance of the transfer flow,the first processor is caused, by execution of the at least one transferroutine, to receive the neural network configuration data from thetraining federated area after completion of the training of the neuralnetwork at partly within the training federated area; and duringperformance of the testing job flow, the first processor is caused, byexecution of at least one testing setup routine of the testing job flow,to use the neural network configuration data to instantiate the neuralnetwork in preparation for the multiple iterations of execution of theat least one testing routine.
 3. The apparatus of claim 2, comprising agraphics processing unit (GPU) that comprises multiple processing coresthat are programmable to operate as the artificial neurons, wherein thefirst processor is caused by execution of the at least one testing setuproutine to use the neural network configuration data to instantiate theneural network among the artificial neurons of the multiple processingcores of the GPU.
 4. The apparatus of claim 2, comprising afield-programmable gate array (FPGA) or an application-specificintegrated circuit (ASIC) to implement the artificial neurons withhardware components, wherein the first processor is caused by executionof the at least one testing setup routine to load the neural networkconfiguration data into the FPGA or the ASIC to instantiate the neuralnetwork therein.
 5. The apparatus of claim 2, comprising a secondprocessor and a second storage to store second instructions that, whenexecuted by the second processor, cause the second processor to performoperations comprising: perform a training job flow with a training dataset to train the neural network at least partly within the trainingfederated area; and cooperate with the first processor to perform thetransfer flow, wherein the cooperation comprises performing operationscomprising: monitor the training of the neural network; and in responseto completion of the training, transfer the neural network configurationdata from the training federated area to the testing federated area. 6.The apparatus of claim 5, wherein: during performance of the trainingjob flow, the second processor is caused, by execution of at least onetraining setup routine of the training job flow, to select a first setof hyperparameters to define the neural network; and in response to thetransfer of the object from the testing federated area to the trainingfederated area in response to the degree of accuracy falling below theminimum threshold, the second processor is caused, by execution of theat least one training setup routine to select a second set ofhyperparameters to define the neural network that differs from the firstset of hyperparameters.
 7. The apparatus of claim 1, wherein duringperformance of the transfer flow, the first processor is caused, byexecution of the at least one transfer routine, and in response to thedegree of accuracy falling between the minimum threshold and the maximumthreshold, to perform operations comprising: cease performance of thetesting job flow; use backpropagation and at least a portion of thetesting data set to further train the neural network; and recommenceperformance of the testing job flow following the further training. 8.The apparatus of claim 1, wherein the first processor is caused, byexecution of the at least one transfer routine, and in response to thedegree of accuracy falling below the minimum threshold, to performoperations comprising: perform a regression analysis of at least aportion of the testing data set associated with inaccurate output by theneural network; and select data generated by the regression analysis asthe object to be transmitted to the training federated area.
 9. Theapparatus of claim 1, wherein: the one or more storage devices maintaina tree of federated areas that comprises the training federated area,the testing federated area and the usage federated area; the trainingfederated area is located within a first branch of the tree; the testingfederated area is located within a second branch of the tree; the usagefederated area is located within one of a third branch of the tree, anda base federated area of the tree or an intermediate federated area ofthe tree from which the first branch and the second branch extend; andaccess to the usage federated area is less restricted than to thetraining federated area and the testing federated area.
 10. Theapparatus of claim 1, wherein the first processor is caused, by eachiteration of execution of the at least one testing routine, to derive aleast mean square (LMS) error during the analysis of an output of theneural network relative to a corresponding set of output values of thetesting data.
 11. A computer-program product tangibly embodied in anon-transitory machine-readable storage medium, the computer-programproduct including first instructions operable to cause a first processorto perform operations comprising: perform a testing job flow with atesting data set at least partly within a testing federated area to testa neural network trained to perform an analytical function, wherein: theneural network is defined by neural network configuration data thatspecifies a hyperparameter comprising at least one of a quantity ofartificial neurons within the neural network or a quantity of rows ofthe artificial neurons into which the artificial neurons are organizedwithin the neural network; the neural network configuration data alsospecifies a trained parameter comprising at least one of weight valuesof the artificial neurons, bias values of the artificial neurons orfiring patterns of the artificial neurons; the testing data setcomprises multiple sets of input values and corresponding multiple setsof output values generated from a previous non-neuromorphic performanceof the analytical function with the multiple sets of input values inwhich the neural network is not used; the performance of the testing jobflow comprises multiple iterations of execution, by the first processor,of instructions of at least one testing routine; during each iterationof execution of at least one testing routine, the first processor iscaused to provide a set of input values of the testing data set to theneural network, and to analyze an output of the neural network generatedfrom the set of input values relative to the corresponding set of outputvalues of the testing data to determine a degree of accuracy of theperformance of the analytical function by the neural network relative tothe previous non-neuromorphic performance of the analytical function;and the testing federated area is maintained within one or more storagedevices to store at least one of the at least one testing routine, thetesting data set or a testing job flow definition that defines thetesting job flow; and perform a transfer flow to transfer an objectindicative of results of the testing of the neural network from thetesting federated area to another federated area, wherein theperformance of the transfer flow comprises at least one iteration ofexecution, by the first processor, of instructions of at least onetransfer routine that causes the first processor to: in response to thedegree of accuracy falling below a predetermined minimum threshold:select a training federated area that is maintained by the one or morestorage devices, and in which the neural network was at least partlytrained, to be the other federated area to which the object is to betransferred; and transfer the object to the selected other federatedarea, wherein the object comprises at least one of a data value thatspecifies the degree of accuracy, at least one set of input values ofthe testing data set associated with inaccurate output, at least one setof output values of the testing data set associated with inaccurateoutput, or inaccurate output generated from at least one set of inputvalues of the testing data set; and in response to the degree ofaccuracy exceeding a predetermined maximum threshold: select a usagefederated area that is maintained by the one or more storage devices,and in which the neural network is to be made available for use; andtransfer the object to the selected other federated area, wherein theobject comprises a copy of the neural network configuration data. 12.The computer-program product of claim 11, wherein: during performance ofthe transfer flow, the first processor is caused, by execution of the atleast one transfer routine, to receive the neural network configurationdata from the training federated area after completion of the trainingof the neural network at partly within the training federated area; andduring performance of the testing job flow, the first processor iscaused, by execution of at least one testing setup routine of thetesting job flow, to use the neural network configuration data toinstantiate the neural network in preparation for the multipleiterations of execution of the at least one testing routine.
 13. Thecomputer-program product of claim 12, wherein the first processor iscaused, by execution of the at least one testing setup routine, to usethe neural network configuration data to instantiate the neural networkamong the artificial neurons provided by multiple processing cores of agraphics processing unit (GPU) that are programmable to operate as theartificial neurons.
 14. The computer-program product of claim 12,wherein: a field-programmable gate array (FPGA) or anapplication-specific integrated circuit (ASIC) implements the artificialneurons with hardware components; and the first processor is caused byexecution of the at least one testing setup routine to load the neuralnetwork configuration data into the FPGA or the ASIC to instantiate theneural network therein.
 15. The computer-program product of claim 12,comprising second instructions that, when executed by a secondprocessor, cause the second processor to perform operations comprising:perform a training job flow with a training data set to train the neuralnetwork at least partly within the training federated area; andcooperate with the first processor to perform the transfer flow, whereinthe cooperation comprises performing operations comprising: monitor thetraining of the neural network; and in response to completion of thetraining, transfer the neural network configuration data from thetraining federated area to the testing federated area.
 16. Thecomputer-program product of claim 15, wherein: during performance of thetraining job flow, the second processor is caused, by execution of atleast one training setup routine of the training job flow, to select afirst set of hyperparameters to define the neural network; and inresponse to the transfer of the object from the testing federated areato the training federated area in response to the degree of accuracyfalling below the minimum threshold, the second processor is caused, byexecution of the at least one training setup routine to select a secondset of hyperparameters to define the neural network that differs fromthe first set of hyperparameters.
 17. The computer-program product ofclaim 11, wherein during performance of the transfer flow, the firstprocessor is caused, by execution of the at least one transfer routine,and in response to the degree of accuracy falling between the minimumthreshold and the maximum threshold, to perform operations comprising:cease performance of the testing job flow; use backpropagation and atleast a portion of the testing data set to further train the neuralnetwork; and recommence performance of the testing job flow followingthe further training.
 18. The computer-program product of claim 11,wherein the first processor is caused, by execution of the at least onetransfer routine, and in response to the degree of accuracy fallingbelow the minimum threshold, to perform operations comprising: perform aregression analysis of at least a portion of the testing data setassociated with inaccurate output by the neural network; and select datagenerated by the regression analysis as the object to be transmitted tothe training federated area.
 19. The computer-program product of claim11, wherein: the one or more storage devices maintain a tree offederated areas that comprises the training federated area, the testingfederated area and the usage federated area; the training federated areais located within a first branch of the tree; the testing federated areais located within a second branch of the tree; the usage federated areais located within one of a third branch of the tree, and a basefederated area of the tree or an intermediate federated area of the treefrom which the first branch and the second branch extend; and access tothe usage federated area is less restricted than to the trainingfederated area and the testing federated area.
 20. The computer-programproduct of claim 11, wherein the first processor is caused, by eachiteration of execution of the at least one testing routine, to derive aleast mean square (LMS) error during the analysis of an output of theneural network relative to a corresponding set of output values of thetesting data.
 21. A computer-implemented method comprising: performing,by a first processor, a testing job flow with a testing data set atleast partly within a testing federated area to test a neural networktrained to perform an analytical function, wherein: the neural networkis defined by neural network configuration data that specifies ahyperparameter comprising at least one of a quantity of artificialneurons within the neural network or a quantity of rows of theartificial neurons into which the artificial neurons are organizedwithin the neural network; the neural network configuration data alsospecifies a trained parameter comprising at least one of weight valuesof the artificial neurons, bias values of the artificial neurons orfiring patterns of the artificial neurons; the testing data setcomprises multiple sets of input values and corresponding multiple setsof output values generated from a previous non-neuromorphic performanceof the analytical function with the multiple sets of input values inwhich the neural network is not used; the performance of the testing jobflow comprises executing multiple iterations, by the first processor, ofinstructions of at least one testing routine; the method furthercomprises, during each iteration of execution of at least one testingroutine, providing a set of input values of the testing data set to theneural network, and analyzing an output of the neural network generatedfrom the set of input values relative to the corresponding set of outputvalues of the testing data to determine a degree of accuracy of theperformance of the analytical function by the neural network relative tothe previous non-neuromorphic performance of the analytical function;and the testing federated area is maintained within one or more storagedevices to store at least one of the at least one testing routine, thetesting data set or a testing job flow definition that defines thetesting job flow; and performing, by the first processor, a transferflow to transfer an object indicative of results of the testing of theneural network from the testing federated area to another federatedarea, wherein the performance of the transfer flow comprises executingat least one iteration, by the first processor, of instructions of atleast one transfer routine, wherein the method further comprises: inresponse to the degree of accuracy falling below a predetermined minimumthreshold: selecting a training federated area that is maintained by theone or more storage devices, and in which the neural network was atleast partly trained, to be the other federated area to which the objectis to be transferred; and transferring the object to the selected otherfederated area, wherein the object comprises at least one of a datavalue that specifies the degree of accuracy, at least one set of inputvalues of the testing data set associated with inaccurate output, atleast one set of output values of the testing data set associated withinaccurate output, or inaccurate output generated from at least one setof input values of the testing data set; or in response to the degree ofaccuracy exceeding a predetermined maximum threshold: selecting a usagefederated area that is maintained by the one or more storage devices,and in which the neural network is to be made available for use; andtransferring the object to the selected other federated area, whereinthe object comprises a copy of the neural network configuration data.22. The computer-implemented method of claim 21, further comprising:during performance of the transfer flow, executing by the firstprocessor, the at least one transfer routine to receive the neuralnetwork configuration data from the training federated area aftercompletion of the training of the neural network at partly within thetraining federated area; and during performance of the testing job flow,executing by the first processor, at least one testing setup routine ofthe testing job flow to use the neural network configuration data toinstantiate the neural network in preparation for the multipleiterations of execution of the at least one testing routine.
 23. Thecomputer-implemented method of claim 22, further comprising executing,by the first processor, the at least one testing setup routine to usethe neural network configuration data to instantiate the neural networkamong the artificial neurons provided by multiple processing cores of agraphics processing unit (GPU) that are programmable to operate as theartificial neurons.
 24. The computer-implemented method of claim 22,wherein: a field-programmable gate array (FPGA) or anapplication-specific integrated circuit (ASIC) implements the artificialneurons with hardware components; and the method further comprisesexecuting, by the first processor, the at least one testing setuproutine to load the neural network configuration data into the FPGA orthe ASIC to instantiate the neural network therein.
 25. Thecomputer-implemented method of claim 22, further comprising: performing,by a second processor, a training job flow with a training data set totrain the neural network at least partly within the training federatedarea; and cooperating, by the second processor, with the first processorto perform the transfer flow, wherein the cooperation comprises:monitoring, by the second processor, the training of the neural network;and in response to completion of the training, transferring, by thesecond processor, the neural network configuration data from thetraining federated area to the testing federated area.
 26. Thecomputer-implemented method of claim 25, comprising: during performanceof the training job flow, executing by the second processor, at leastone training setup routine of the training job flow to select a firstset of hyperparameters to define the neural network; and in response tothe transfer of the object from the testing federated area to thetraining federated area in response to the degree of accuracy fallingbelow the minimum threshold, executing by the second processor, the atleast one training setup routine to select a second set ofhyperparameters to define the neural network that differs from the firstset of hyperparameters.
 27. The computer-implemented method of claim 21,comprising, during performance of the transfer flow, executing by thefirst processor the at least one transfer routine, and in response tothe degree of accuracy falling between the minimum threshold and themaximum threshold, performing operations, by the first processor,comprising: ceasing performance of the testing job flow; usingbackpropagation and at least a portion of the testing data set tofurther train the neural network; and recommencing performance of thetesting job flow following the further training.
 28. Thecomputer-implemented method of claim 21, further comprising executing,by the first processor, the at least one transfer routine, and inresponse to the degree of accuracy falling below the minimum threshold,performing operations comprising: performing, by the first processor, aregression analysis of at least a portion of the testing data setassociated with inaccurate output by the neural network; and selectingdata generated by the regression analysis as the object to betransmitted to the training federated area.
 29. The computer-implementedmethod of claim 21, wherein: the one or more storage devices maintain atree of federated areas that comprises the training federated area, thetesting federated area and the usage federated area; the trainingfederated area is located within a first branch of the tree; the testingfederated area is located within a second branch of the tree; the usagefederated area is located within one of a third branch of the tree, anda base federated area of the tree or an intermediate federated area ofthe tree from which the first branch and the second branch extend; andaccess to the usage federated area is less restricted than to thetraining federated area and the testing federated area.
 30. Thecomputer-implemented method of claim 21, further comprising, during eachiteration of execution of the at least one testing routine, deriving bythe first processor, a least mean square (LMS) error during the analysisof an output of the neural network relative to a corresponding set ofoutput values of the testing data.